Pregunta ¿Cómo comprobar si una biblioteca está instalada?


En Linux, ¿cómo verifico si una biblioteca está instalada o no? (desde la línea de comando por supuesto).

En mi caso específico ahora, quiero comprobar si libjpeg está instalado.


139
2017-08-16 16:02


origen


¿Qué distribución estás usando? - radius


Respuestas:


Para hacer esto de una manera independiente de la distribución *, puede usar ldconfig con grep, como esto:

ldconfig -p | grep libjpeg

Si libjpeg no está instalado, no habrá salida. Si está instalado, obtendrá una línea para cada versión disponible.

Reemplace libjpeg por cualquier biblioteca que desee, y tiene una forma genérica, independiente de la distribución * de verificar la disponibilidad de la biblioteca.

Si, por algún motivo, la ruta de acceso a ldconfig no está establecida, puede intentar invocarla utilizando su ruta completa, normalmente /sbin/ldconfig.

** 99% de las veces *


174
2018-06-06 22:19



Esto debe ser aceptado como la respuesta. ¡Genial!
No es posible usar esto para verificar la versión dev (encabezados) de una biblioteca, ¿verdad? - andig
Puedes especificar 99% de veces? bash: ldconfig: command not found en Debian x64 Jessie con xfce! Esta es la versión de Debian recomendada en el sitio web de Debian ... - Tomáš Zato
@ TomášZato: ldconfig no está disponible (command not found aparece) si intenta ejecutarlo sin ser superusuario. - Gauthier
/sbin/ldconfig -p Trabaja para mí sin necesidad de ser root. - Pedro Gimeno


Puede consultar con el administrador de paquetes de su distribución (aptitude, yum, ...) pero como no dio su distribución, no puedo darle el comando correcto.

Otra forma puede ser correr. gcc -ljpeg, si obtiene 'ld: library no encontrado para -ljpeg' significa que gcc no ha encontrado la biblioteca (pero no significa que no está instalada), si obtiene algo como 'Símbolos no definidos: "_main", referenciado de: ... 'significa que se ha encontrado libjpeg.

locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg* Hay alguna otra manera de encontrar si la biblioteca está instalada en el sistema.

Hay muchas otras formas de verificar que, si nos da más contexto (por qué necesita verificar si libjpeg está instalado), podríamos darle la mejor solución para su caso específico.


32
2017-08-16 16:16



¿Cómo encontrarlo usando aptitude? - BBK


Yo uso dónde está utilidad.
Muestra:

l1feh4ck3r @ xxx: ~ $ whereis libjpeg
libjpeg: /usr/lib/libjpeg.so /usr/lib/libjpeg.a /usr/lib/libjpeg.la

15
2017-08-17 01:00





Para la distribución basada en Deb puedes hacer

dpkg -s packagename

O si solo conoce el nombre de archivo, use

locate filename

El nombre del archivo es usualmente libsomething.so [.version].


8
2017-08-16 16:28



El nombre del archivo también puede ser algo así como "libsomething.a" para la versión estática. - radius
Encuentro dpkg -s de utilidad limitada, ya que quiere el nombre del paquete real, que puede diferir sutil o significativamente de la propia biblioteca. yo suelo dpkg -s|grep LIBRARY - Drew Stephens
@dinomite apt-file es tu amigo :) - radius


Yo uso esto:

gcc -lpng

Cuando se instala la biblioteca, se obtiene:

undefined reference to 'main'

Cuando el lib es no instalado:

cannot find -lpng

8
2018-03-31 14:50





En los sistemas basados ​​en Redhat, se puede usar pkg-config para verificar si una biblioteca está instalada o no. Muchos binarios de rpm realizan las mismas comprobaciones antes de continuar con la instalación, por lo que podemos confiar razonablemente en su veracidad.

pkg-config --cflags jpeg

pkg-config --libs jpeg

pkg-config --cflags "jpeg >= 1.0.0" # for version check
pkg-config  --modversion jpeg | awk -F. '{ printf "0x%02X%02X%02X\n",$1,$2,$3 }' #version check

3
2018-02-07 09:35





Esto se hace mediante herramientas de configuración en linux todo el tiempo.

Mira esto Tutorial sobre autoconf y KDevelop.

Otros trucos usarían comandos como ldconfig y dpkg.


1
2017-08-16 16:11





También puede intentar usar dpkg para verificar si está instalado.

dpkg --list | grep [some_key_words_of_your_lib]


0
2017-10-25 08:09



Nota: Funcionará solo para distribuciones basadas en Debian - ALex_hha