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

14

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 viennent pas 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 j'ai pensé que 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 très longtemps /etc/ld.so.cache.

J'en suis maintenant à un point où je me sens perdu comment enquêter davantage, il 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:
Abdul Al Hazred
la source
Quelle est votre distribution / OS? Y a-t-il une raison pour laquelle vous n'utilisez pas le ffmpeg de votre distribution?
Faheem Mitha
J'utilise le nom de code Linux mint Rebecca, ffmpeg n'était pas déjà installé sur ma distribution, quand j'ai essayé de l'installer par "apt-get install ffmpeg" s'est avéré qu'il n'y avait pas ffmpeg (seulement le mot-clé dans d'autres programmes), j'ai ajouté un référentiel où il était inclus et pouvait l'installer, mais après "ldd / usr / bin / ffmpeg" j'ai découvert que ffmpeg manquait certaines bibliothèques, j'ai essayé d'installer ces bibliothèques en tapant leurs noms dans apt-get mais elles ne pouvaient pas être trouvées de cette façon.
Abdul Al Hazred
Juste dire, ffmpeg peut être une vraie douleur à installer. Il peut être préférable d'utiliser une installation statique de git. En voici une qui a été créée par une bonne âme pour vous sauver des maux de tête: johnvansickle.com/ffmpeg
Baazigar
Il serait utile que vous nous indiquiez à partir de quel référentiel vous l'avez installé. :-) Aussi, pouvez-vous coller la sortie de apt-get -f installdans votre question, s'il vous plaît? Remarque: ubuntu est basé sur Ubuntu 14.04, vous pouvez donc y regarder si ffmpeg n'est pas inclus dans votre distribution.
Faheem Mitha
Je ne me souviens pas du nom du référentiel, mais c'était comme le nom d'un nom de famille qui se termine par son fils, quand j'ai essayé de le rechercher dans /etc/apt/sources.list /etc/apt/sources.list.d /
Abdul Al Hazred le

Réponses:

5

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 dès 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.

Baazigar
la source
Donc, s'il n'existe pas dans / usr / lib ou / usr / lib64, il n'est définitivement pas installé à 100%?
Abdul Al Hazred le
S'il n'existe pas dans / usr / lib ou / usr / lib64, il n'est probablement pas installé. L'installation de ffmpeg peut être très difficile, pour que ffmpeg fonctionne comme prévu, vous avez souvent besoin de ffmpeg et d'autre chose. Parfois, de nombreux «quelque chose d'autre». Je suggère fortement d'utiliser une version statique, sauf si vous préférez souffrir de l'installation manuelle, ce qui est compréhensible.
Baazigar le
Je ne sais pas ce qu'est une construction statique ....
Abdul Al Hazred
1
La construction statique signifie que ffmpeg et les outils associés ont été compilés pour tous fonctionner ensemble à partir d'un seul répertoire. Lorsque vous utilisez git pour tirer cela vers votre serveur, vous avez tout à cet endroit, il n'est donc pas question de bibliothèques ou de quoi que ce soit. Tout est réuni dans une «boîte» pour ainsi dire, tout ce que vous avez à faire est de définir vos directives de manière à ce qu'il pointe. Voici où vous pouvez en savoir plus et l'obtenir: johnvansickle.com/ffmpeg
Baazigar
27

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 l' ldconfigoption -p:

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

taliezin
la source
1

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

Ne liez pas symboliquement les bibliothèques entre /usr/libet /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.).

gmorganVA
la source