web-dev-qa-db-fra.com

Comment vérifier si une bibliothèque partagée est installée?

Ma question provient de mon problème de démarrage de ffmpeg. J'ai installé ffmpeg et il s'affiche comme installé:

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

Plus tard, j'ai compris que certains programmes dépendent de bibliothèques qui ne sont pas fournies avec l'installation elle-même, j'ai donc vérifié avec la commande ldd ce qui manque:

# 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)

En fin de compte, mon ffmpeg est coupé de 7 bibliothèques aussi. J'ai d'abord pensé que chacune de ces bibliothèques devait être installée, mais que je ne le pensais, certaines ou toutes pourraient être installées, mais leur emplacement n'était pas connu de ffmpeg. J'ai lu que /etc/ld.so.conf et /etc/ld.so.cache contiennent les chemins d'accès aux bibliothèques, mais j'étais confus, car, il n'y avait qu'une seule ligne dans

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

mais un très long /etc/ld.so.cache.

J'en suis maintenant à un point où je me sens perdu sur la façon de poursuivre mes recherches. Cela pourrait être une prochaine étape utile pour comprendre comment je peux déterminer si une bibliothèque donnée est effectivement installée même si son emplacement est inconnu de 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:
16
Abdul Al Hazred

Recherchez dans/usr/lib et/usr/lib64 ces bibliothèques. Si vous trouvez que l'un des fichiers ffmpeg est manquant, créez un lien symbolique pour qu'il existe dans l'autre répertoire.

Vous pouvez également exécuter une recherche pour "libm.so.6" et voir où se trouve ce fichier. Il y a de fortes chances que ffmpeg recherche dans le même répertoire les fichiers manquants. Créez des liens symboliques là-bas une fois que vous les avez trouvés.

S'ils n'existent pas sur votre serveur, installez le package qui les inclut. S'ils sont inclus dans le package ffmpeg mais que vous ne les voyez pas, essayez de réinstaller ffmpeg.

5
Baazigar

Vous pouvez utiliser:

ldconfig -p | grep libavfilter

S'il n'y a pas de bibliothèque de sortie n'est pas installé. Je ne suis pas sûr que ce soit fiable à 100%.
Au moins dans la page de manuel de ldconfig pour l'option -p:

Imprimez les listes de répertoires et de bibliothèques candidates stockées dans le cache actuel.

30
taliezin

Utilisez la commande file `which ffmpeg` pour déterminer si ffmpeg est compilé pour 64 bits ou 32 bits. S'il s'agit de 64 bits, recherchez les bibliothèques dans /usr/lib64. S'il est 32 bits, recherchez les bibliothèques dans /usr/lib. Si ffmpeg est lié statiquement, cela n'a pas d'importance ... il n'utilisera aucune bibliothèque partagée et la sortie de file vous le dira également.

Ne liez pas symboliquement les bibliothèques entre /usr/lib et /usr/lib64. Cela ne vous aidera pas car un programme 64 bits aura besoin de bibliothèques 64 bits (trouvées dans /usr/lib64) et un programme 32 bits aura besoin de bibliothèques 32 bits (trouvées dans /usr/lib32).

Si les bibliothèques n'existent pas sur votre serveur, installez le package qui les fournit (assurez-vous de choisir le package 32 bits si ffmpeg est 32 bits, etc.).

1
gmorganVA