Wie überprüfe ich, ob eine gemeinsam genutzte Bibliothek installiert ist?

14

Meine Frage rührt von meinem Problem beim Starten von ffmpeg her. Ich habe ffmpeg installiert und es wird als installiert angezeigt:

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

Später stellte ich fest, dass einige Programme von Bibliotheken abhängen, die nicht mit der Installation selbst geliefert werden. Deshalb überprüfte ich mit dem Befehl ldd, was fehlt:

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

Wie sich herausstellt, ist mein ffmpeg von 7 Bibliotheken abgeschnitten, um zu funktionieren. Ich dachte zuerst, dass jede dieser Bibliotheken installiert werden muss, aber als ich herausfand, dass einige oder alle installiert sein könnten, aber ihr Speicherort ist ffmpeg unbekannt. Ich habe gelesen, dass /etc/ld.so.conf und /etc/ld.so.cache die Pfade zu den Bibliotheken enthalten, aber ich war verwirrt, weil nur eine Zeile darin war

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

aber ein sehr langer /etc/ld.so.cache.

Ich bin jetzt an einem Punkt angelangt, an dem ich mich nicht mehr weiter erforschen kann. Es könnte ein hilfreicher nächster Schritt sein, herauszufinden, wie ich feststellen kann, ob eine bestimmte Bibliothek tatsächlich installiert ist, auch wenn ihr Speicherort ffmpeg unbekannt ist.

---------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
quelle
Was ist Ihre Distribution / Ihr Betriebssystem? Gibt es einen Grund, warum Sie das ffmpeg aus Ihrer Distribution nicht verwenden?
Faheem Mitha
Ich benutze Linux Mint Codename Rebecca, ffmpeg war noch nicht auf meiner Distribution installiert, als ich versuchte, es mit "apt-get install ffmpeg" zu installieren, stellte sich heraus, dass es kein ffmpeg gab (nur das Schlüsselwort in anderen Programmen), ich fügte ein Repository hinzu, in dem es war im Lieferumfang enthalten und konnte installiert werden, aber nachdem ich festgestellt hatte, dass in "ldd / usr / bin / ffmpeg" einige Bibliotheken fehlen, habe ich versucht, diese Bibliotheken zu installieren, indem ich ihre Namen in apt-get eingab, aber sie konnten nicht auf diese Weise gefunden werden.
Abdul Al Hazred
Nur zu sagen, ffmpeg kann ein echtes Ärgernis sein, es zu installieren. Es kann besser sein, eine statische Installation von Git zu verwenden. Hier ist eine, die von einer freundlichen Seele geschaffen wurde, um Sie vor Kopfschmerzen zu bewahren: johnvansickle.com/ffmpeg
Baazigar
Es wäre hilfreich, wenn Sie uns mitteilen würden, aus welchem ​​Repository Sie es installiert haben. :-) Kannst du apt-get -f installbitte auch die Ausgabe von in deine Frage einfügen ? Hinweis: ubuntu basiert auf Ubuntu 14.04, Sie können also nachsehen, ob ffmpeg nicht in Ihrer Distribution enthalten ist.
Faheem Mitha
Ich kann mich nicht an den Namen des Repository erinnern, aber es war wie der Name eines Nachnamens, der auf Sohn endet, als ich versuchte, ihn in /etc/apt/sources.list /etc/apt/sources.list.d nachzuschlagen /
Abdul Al Hazred

Antworten:

5

Suchen Sie in / usr / lib und / usr / lib64 nach diesen Bibliotheken. Wenn Sie feststellen, dass einer der ffmpeg fehlt, verknüpfen Sie ihn mit einem Symbol, damit er im anderen Verzeichnis vorhanden ist.

Sie können auch eine Suche nach 'libm.so.6' durchführen und sehen, wo sich diese Datei befindet. Es besteht eine gute Chance, dass ffmpeg im selben Verzeichnis nach den fehlenden sucht. Verknüpfe sie dort, sobald du sie gefunden hast.

Wenn sie auf Ihrem Server nicht vorhanden sind, installieren Sie das Paket, das sie enthält. Wenn sie im ffmpeg-Paket enthalten sind, Sie sie jedoch nicht sehen, installieren Sie ffmpeg erneut.

Baazigar
quelle
Wenn es also nicht in / usr / lib oder / usr / lib64 existiert, ist es definitiv zu 100 Prozent nicht installiert?
Abdul Al Hazred
Wenn es in / usr / lib oder / usr / lib64 nicht vorhanden ist, wird es höchstwahrscheinlich nicht installiert. Die Installation von ffmpeg kann sehr schwierig sein. Damit ffmpeg wie erwartet funktioniert, benötigen Sie häufig ffmpeg und etwas anderes. Manchmal zahlreiche "etwas anderes". Es wird dringend empfohlen, einen statischen Build zu verwenden, es sei denn, Sie möchten die manuelle Installation durchführen, was verständlich ist.
Baazigar
Ich weiß nicht, was ein statischer Build ist ....
Abdul Al Hazred
1
Statische Erstellung bedeutet, dass ffmpeg und verwandte Tools so kompiliert wurden, dass sie alle aus nur einem Verzeichnis zusammenarbeiten. Wenn Sie git verwenden, um das auf Ihren Server herunter zu ziehen, haben Sie alles an diesem einen Ort, so dass es keine Frage von Bibliotheken oder irgendetwas gibt. Es kommt sozusagen in einer "Box", alles, was Sie tun müssen, ist, Ihre Anweisungen so zu setzen, dass sie darauf verweisen. Hier können Sie mehr darüber lesen und es bekommen: johnvansickle.com/ffmpeg
Baazigar
25

Sie können verwenden:

ldconfig -p | grep libavfilter

Wenn keine Ausgabebibliothek vorhanden ist, wird diese nicht installiert. Ich bin nicht sicher, ob dies 100% zuverlässig ist.
Zumindest in der Manpage von ldconfigfür Option -p:

Drucken Sie die Listen der im aktuellen Cache gespeicherten Verzeichnisse und Kandidatenbibliotheken.

Taliezin
quelle
1

Verwenden Sie den Befehl file `which ffmpeg` um festzustellen, ob ffmpegfür 64-Bit- oder 32-Bit-Versionen kompiliert wurde. Wenn es 64-Bit ist, suchen Sie nach den Bibliotheken in /usr/lib64. Wenn es 32-Bit ist, suchen Sie nach den Bibliotheken in /usr/lib. Wenn ffmpegstatisch verknüpft ist, spielt es keine Rolle ... es werden keine gemeinsam genutzten Bibliotheken verwendet, und die Ausgabe von filewird Ihnen dies ebenfalls mitteilen.

Verknüpfen Sie Bibliotheken nicht symbolisch zwischen /usr/libund /usr/lib64. Dies hilft Ihnen nicht weiter, da ein 64-Bit-Programm 64-Bit-Bibliotheken (gefunden in /usr/lib64) und ein 32-Bit-Programm 32-Bit-Bibliotheken (gefunden in /usr/lib32) benötigt.

Wenn die Bibliotheken auf Ihrem Server nicht vorhanden sind, installieren Sie das Paket, das sie bereitstellt (stellen Sie sicher, dass Sie das 32-Bit-Paket auswählen, wenn ffmpeg 32-Bit ist usw.).

gmorganVA
quelle