¿Cómo verificar si una biblioteca compartida está instalada?

14

Mi pregunta se origina en mi problema para iniciar ffmpeg. He instalado ffmpeg y se muestra como instalado:

whereis ffmpeg 
ffmpeg: /usr/bin/ffmpeg /usr/bin/X11/ffmpeg /usr/share/ffmpeg /usr/share/man/man1/ffmpeg.1.gz

Más tarde, descubrí que algunos programas dependen de bibliotecas que no vienen con la instalación en sí, así que verifiqué con el comando ldd lo que falta:

# ldd /usr/bin/ffmpeg
    linux-vdso.so.1 =>  (0x00007fff71fe9000)
    libavfilter.so.0 => not found
    libpostproc.so.51 => not found
    libswscale.so.0 => not found
    libavdevice.so.52 => not found
    libavformat.so.52 => not found
    libavcodec.so.52 => not found
    libavutil.so.49 => not found
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5f20bdf000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5f209c0000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5f205fb000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f5f20f09000)

Como resultado, mi ffmpeg está cortado de 7 bibliotecas también funciona. Primero pensé que cada una de esas bibliotecas tenía que estar instalada, pero de lo que deduje, algunas o todas podrían estar instaladas, pero su ubicación es desconocida para ffmpeg. Leí que /etc/ld.so.conf y /etc/ld.so.cache contienen las rutas a las bibliotecas, pero estaba confundido, porque solo había una línea en

/etc/ld.so.conf
 cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf

pero un tiempo muy largo /etc/ld.so.cache.

Ahora estoy en un punto en el que me siento perdido cómo investigar más a fondo, podría ser un siguiente paso útil para averiguar, cómo puedo determinar si una biblioteca determinada está realmente instalada, incluso si su ubicación es desconocida para ffmpeg.

---------Output---of----apt-cache-policy-----request---------
apt-cache policy
Package files:
 100 /var/lib/dpkg/status
     release a=now
 500 http://archive.canonical.com/ubuntu/ trusty/partner Translation-en
 500 http://archive.canonical.com/ubuntu/ trusty/partner i386 Packages
     release v=14.04,o=Canonical,a=trusty,n=trusty,l=Partner archive,c=partner
     origin archive.canonical.com
 500 http://archive.canonical.com/ubuntu/ trusty/partner amd64 Packages
     release v=14.04,o=Canonical,a=trusty,n=trusty,l=Partner archive,c=partner
     origin archive.canonical.com
 500 http://security.ubuntu.com/ubuntu/ trusty-security/universe Translation-en
 500 http://security.ubuntu.com/ubuntu/ trusty-security/restricted Translation-en
 500 http://security.ubuntu.com/ubuntu/ trusty-security/multiverse Translation-en
 500 http://security.ubuntu.com/ubuntu/ trusty-security/main Translation-en
 500 http://security.ubuntu.com/ubuntu/ trusty-security/multiverse i386 Packages
     release v=14.04,o=Ubuntu,a=trusty-security,n=trusty,l=Ubuntu,c=multiverse
     origin security.ubuntu.com
 500 http://security.ubuntu.com/ubuntu/ trusty-security/universe i386 Packages
     release v=14.04,o=Ubuntu,a=trusty-security,n=trusty,l=Ubuntu,c=universe
     origin security.ubuntu.com
 500 http://security.ubuntu.com/ubuntu/ trusty-security/restricted i386 Packages
     release v=14.04,o=Ubuntu,a=trusty-security,n=trusty,l=Ubuntu,c=restricted
     origin security.ubuntu.com
 500 http://security.ubuntu.com/ubuntu/ trusty-security/main i386 Packages
     release v=14.04,o=Ubuntu,a=trusty-security,n=trusty,l=Ubuntu,c=main
     origin security.ubuntu.com
 500 http://security.ubuntu.com/ubuntu/ trusty-security/multiverse amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty-security,n=trusty,l=Ubuntu,c=multiverse
     origin security.ubuntu.com
 500 http://security.ubuntu.com/ubuntu/ trusty-security/universe amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty-security,n=trusty,l=Ubuntu,c=universe
     origin security.ubuntu.com
 500 http://security.ubuntu.com/ubuntu/ trusty-security/restricted amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty-security,n=trusty,l=Ubuntu,c=restricted
     origin security.ubuntu.com
 500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty-security,n=trusty,l=Ubuntu,c=main
     origin security.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/universe Translation-en
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/restricted Translation-en
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/multiverse Translation-en
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/main Translation-en
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/multiverse i386 Packages
     release v=14.04,o=Ubuntu,a=trusty-updates,n=trusty,l=Ubuntu,c=multiverse
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/universe i386 Packages
     release v=14.04,o=Ubuntu,a=trusty-updates,n=trusty,l=Ubuntu,c=universe
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/restricted i386 Packages
     release v=14.04,o=Ubuntu,a=trusty-updates,n=trusty,l=Ubuntu,c=restricted
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/main i386 Packages
     release v=14.04,o=Ubuntu,a=trusty-updates,n=trusty,l=Ubuntu,c=main
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/multiverse amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty-updates,n=trusty,l=Ubuntu,c=multiverse
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/universe amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty-updates,n=trusty,l=Ubuntu,c=universe
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/restricted amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty-updates,n=trusty,l=Ubuntu,c=restricted
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty-updates,n=trusty,l=Ubuntu,c=main
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty/universe Translation-en
 500 http://archive.ubuntu.com/ubuntu/ trusty/restricted Translation-en
 500 http://archive.ubuntu.com/ubuntu/ trusty/multiverse Translation-en
 500 http://archive.ubuntu.com/ubuntu/ trusty/main Translation-en
 500 http://archive.ubuntu.com/ubuntu/ trusty/multiverse i386 Packages
     release v=14.04,o=Ubuntu,a=trusty,n=trusty,l=Ubuntu,c=multiverse
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty/universe i386 Packages
     release v=14.04,o=Ubuntu,a=trusty,n=trusty,l=Ubuntu,c=universe
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty/restricted i386 Packages
     release v=14.04,o=Ubuntu,a=trusty,n=trusty,l=Ubuntu,c=restricted
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty/main i386 Packages
     release v=14.04,o=Ubuntu,a=trusty,n=trusty,l=Ubuntu,c=main
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty/multiverse amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty,n=trusty,l=Ubuntu,c=multiverse
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty,n=trusty,l=Ubuntu,c=universe
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty/restricted amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty,n=trusty,l=Ubuntu,c=restricted
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty,n=trusty,l=Ubuntu,c=main
     origin archive.ubuntu.com
 700 http://extra.linuxmint.com/ rebecca/main i386 Packages
     release v=17.1,o=linuxmint,a=rebecca,n=rebecca,l=linuxmint,c=main
     origin extra.linuxmint.com
 700 http://extra.linuxmint.com/ rebecca/main amd64 Packages
     release v=17.1,o=linuxmint,a=rebecca,n=rebecca,l=linuxmint,c=main
     origin extra.linuxmint.com
 700 http://packages.linuxmint.com/ rebecca/import i386 Packages
     release v=17.1,o=linuxmint,a=rebecca,n=rebecca,l=linuxmint,c=import
     origin packages.linuxmint.com
 700 http://packages.linuxmint.com/ rebecca/upstream i386 Packages
     release v=17.1,o=linuxmint,a=rebecca,n=rebecca,l=linuxmint,c=upstream
     origin packages.linuxmint.com
 700 http://packages.linuxmint.com/ rebecca/main i386 Packages
     release v=17.1,o=linuxmint,a=rebecca,n=rebecca,l=linuxmint,c=main
     origin packages.linuxmint.com
 700 http://packages.linuxmint.com/ rebecca/import amd64 Packages
     release v=17.1,o=linuxmint,a=rebecca,n=rebecca,l=linuxmint,c=import
     origin packages.linuxmint.com
 700 http://packages.linuxmint.com/ rebecca/upstream amd64 Packages
     release v=17.1,o=linuxmint,a=rebecca,n=rebecca,l=linuxmint,c=upstream
     origin packages.linuxmint.com
 700 http://packages.linuxmint.com/ rebecca/main amd64 Packages
     release v=17.1,o=linuxmint,a=rebecca,n=rebecca,l=linuxmint,c=main
     origin packages.linuxmint.com
Pinned packages:
Abdul Al Hazred
fuente
¿Cuál es su distribución / SO? ¿Hay alguna razón por la que no estás usando el ffmpeg de tu distribución?
Faheem Mitha
Utilizo el nombre en clave de Linux, Rebecca, ffmpeg no estaba instalado en mi distribución, cuando intenté instalarlo mediante "apt-get install ffmpeg" resultó que no había ffmpeg (solo la palabra clave en otros programas), agregué un repositorio donde estaba incluido y podía instalarlo, pero después de "ldd / usr / bin / ffmpeg" descubrí que a ffmpeg le faltaban algunas bibliotecas, intenté instalar esas bibliotecas escribiendo sus nombres en apt-get pero no se encontraron de esta manera.
Abdul Al Hazred
Solo digo que ffmpeg puede ser un verdadero problema en la instalación. Puede ser mejor usar una instalación estática de git. Aquí hay uno creado por un alma amable para salvarte de los dolores de cabeza: johnvansickle.com/ffmpeg
Baazigar
Sería útil que nos dijera desde qué repositorio lo instaló. :-) Además, ¿puedes pegar el resultado de apt-get -f installtu pregunta, por favor? Nota: ubuntu se basa en Ubuntu 14.04, por lo que puede buscar allí si ffmpeg no está incluido en su distribución.
Faheem Mitha
No recuerdo el nombre del repositorio, pero era como el nombre de un apellido que termina en hijo, cuando intenté buscarlo en /etc/apt/sources.list /etc/apt/sources.list.d /
Abdul Al Hazred

Respuestas:

5

Busque en / usr / lib y / usr / lib64 para esas bibliotecas. Si encuentra que falta uno de los ffmpeg, haga un enlace simbólico para que exista en el otro directorio.

También puede ejecutar una búsqueda para 'libm.so.6' y ver dónde está ese archivo. Hay una buena posibilidad de que ffmpeg busque en el mismo directorio los que faltan. Enlace simbólico allí una vez que los encuentre.

Si no existen en su servidor, instale el paquete que los incluye. Si están incluidos en el paquete ffmpeg pero no los ve, intente reinstalar ffmpeg.

Baazigar
fuente
Entonces, si no existe en / usr / lib o / usr / lib64, ¿definitivamente no está instalado al 100%?
Abdul Al Hazred
Si no existe en / usr / lib o / usr / lib64, lo más probable es que no esté instalado. La instalación de ffmpeg puede ser muy difícil, para que ffmpeg funcione como la gente espera, a menudo necesita ffmpeg y algo más. A veces numerosos 'algo más'. Le recomiendo usar una construcción estática a menos que prefiera sufrir la instalación manual, lo cual es comprensible.
Baazigar
No sé qué es una construcción estática ...
Abdul Al Hazred
1
La construcción estática significa que ffmpeg y las herramientas relacionadas se han compilado para que funcionen juntas en un solo directorio. Cuando usas git para llevarlo a tu servidor, tienes todo en ese único lugar, por lo que no se trata de bibliotecas ni nada. Viene todo en una 'caja', por así decirlo, todo lo que tiene que hacer es configurar sus directivas para señalarlo. Aquí es donde puede leer más al respecto y obtenerlo: johnvansickle.com/ffmpeg
Baazigar
27

Puedes usar:

ldconfig -p | grep libavfilter

Si no hay salida, la biblioteca no está instalada. No estoy seguro si esto es 100% confiable.
Al menos en la página man de ldconfigfor option -p:

Imprima las listas de directorios y bibliotecas candidatas almacenadas en el caché actual.

taliezin
fuente
1

Use el comando file `which ffmpeg`para determinar si ffmpegse compila para 64 bits o 32 bits. Si es de 64 bits, busque las bibliotecas en /usr/lib64. Si es de 32 bits, busque las bibliotecas en /usr/lib. Si ffmpegestá vinculado estáticamente, entonces no importa ... no usará ninguna biblioteca compartida y la salida de fileeso también lo dirá.

No vincule simbólicamente las bibliotecas entre /usr/liby /usr/lib64. Esto no lo ayudará porque un programa de 64 bits necesitará bibliotecas de 64 bits (que se encuentran en /usr/lib64) y un programa de 32 bits necesitará bibliotecas de 32 bits (que se encuentran en /usr/lib32).

Si las bibliotecas no existen en su servidor, instale el paquete que las proporciona (asegúrese de elegir el paquete de 32 bits si ffmpeg es de 32 bits, etc.).

gmorganVA
fuente