Come verificare se è installata una libreria condivisa?


14

La mia domanda nasce dal mio problema nell'avvio di ffmpeg. Ho installato ffmpeg e viene visualizzato come installato:

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

Successivamente, ho capito che alcuni programmi dipendono da librerie che non vengono fornite con l'installazione stessa, quindi ho controllato con il comando ldd cosa manca:

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

A quanto pare il mio ffmpeg è tagliato anche da 7 librerie. In primo luogo ho pensato che ognuna di quelle librerie dovesse essere installata, ma di quanto ho capito, che alcune o tutte potrebbero essere installate, ma la loro posizione è sconosciuta a ffmpeg. Ho letto che /etc/ld.so.conf e /etc/ld.so.cache contengono i percorsi delle librerie, ma ero confuso, perché c'era solo una riga in

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

ma molto lungo /etc/ld.so.cache.

Ora sono a un punto in cui mi sento perso come indagare ulteriormente, Potrebbe essere un utile passo successivo per capire, come posso determinare se una determinata libreria è effettivamente installata anche se la sua posizione è sconosciuta a 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:

Qual è la tua distribuzione / sistema operativo? C'è qualche motivo per cui non stai usando ffmpeg dalla tua distribuzione?
Faheem Mitha,

Uso il nome in codice di Linux Rebecca, ffmpeg non era già installato sulla mia distribuzione, quando ho provato a installarlo con "apt-get install ffmpeg" ho scoperto che non c'era ffmpeg (solo la parola chiave in altri programmi), ho aggiunto un repository in cui era incluso e poteva installarlo, ma dopo che "ldd / usr / bin / ffmpeg" ho scoperto che mancavano alcune librerie di ffmpeg, ho provato a installarle digitando i loro nomi in apt-get ma non sono state trovate in questo modo.
Abdul Al Hazred,

Dico solo che ffmpeg può essere una vera seccatura da installare. Può essere meglio usare un'installazione statica da git. Eccone uno creato da un'anima gentile per salvarti dal mal di testa: johnvansickle.com/ffmpeg
Baazigar

Sarebbe utile se ci dicessi da quale archivio lo hai installato. :-) Inoltre, puoi incollare l'output della apt-get -f installtua domanda, per favore? Nota: ubuntu si basa su Ubuntu 14.04, quindi puoi guardare lì se ffmpeg non è incluso nella tua distribuzione.
Faheem Mitha,

Non riesco a ricordare il nome del repository, ma era come il nome di un cognome che termina con il figlio, quando ho provato a cercarlo in /etc/apt/sources.list /etc/apt/sources.list.d /
Abdul Al Hazred

Risposte:


5

Cerca in / usr / lib e / usr / lib64 le librerie. Se trovi uno di quelli che mancano a ffmpeg, collegalo in modo che esista nell'altra directory.

Puoi anche eseguire una ricerca per 'libm.so.6' e vedere dove si trova quel file. C'è una buona probabilità che ffmpeg stia cercando nella stessa directory quelli mancanti. Collegali al link laggiù quando li trovi.

Se non esistono sul tuo server, installa il pacchetto che li include. Se sono inclusi nel pacchetto ffmpeg ma non li vedi, prova a reinstallare ffmpeg.


Quindi se non esiste in / usr / lib o / usr / lib64 non è definitivamente installato al 100 percento?
Abdul Al Hazred,

Se non esiste in / usr / lib o / usr / lib64 molto probabilmente non è installato. L'installazione di ffmpeg può essere molto difficile, per far funzionare ffmpeg come le persone si aspettano, spesso è necessario ffmpeg e qualcos'altro. A volte numerosi "qualcosa succede". Consiglio vivamente di usare una build statica a meno che tu non preferisca soffrire dell'installazione manuale, il che è comprensibile.
Baazigar,

Non so cosa sia una build statica ....
Abdul Al Hazred

1
Build statico significa che ffmpeg e gli strumenti correlati sono stati compilati per funzionare tutti insieme da un'unica directory. Quando usi git per trascinarlo sul tuo server, hai tutto in quell'unico posto, quindi non c'è questione di librerie o altro. Viene tutto in una 'scatola' per così dire, tutto quello che devi fare è impostare le tue direttive in modo che puntino a questo. Ecco dove puoi leggere di più e ottenerlo: johnvansickle.com/ffmpeg
Baazigar

27

Puoi usare:

ldconfig -p | grep libavfilter

Se non è presente alcuna libreria di output non è installata. Non sono sicuro che sia affidabile al 100%.
Almeno nella pagina man di ldconfigper l'opzione -p:

Stampa gli elenchi di directory e librerie candidate archiviati nella cache corrente.


1

Utilizzare il comando file `which ffmpeg`per determinare se ffmpegè compilato per 64-bit o 32-bit. Se è a 64 bit, cerca le librerie in /usr/lib64. Se è a 32 bit, cerca le librerie in /usr/lib. Se ffmpegè staticamente collegato, non importa ... non utilizzerà alcuna libreria condivisa e anche l'output di te filelo dirà.

Non collegare simbolicamente librerie tra /usr/libe /usr/lib64. Questo non ti aiuterà perché un programma a 64 bit avrà bisogno di librerie a 64 bit (trovato in /usr/lib64) e un programma a 32 bit avrà bisogno di librerie a 32 bit (trovato in /usr/lib32).

Se le librerie non esistono sul tuo server, installa il pacchetto che le fornisce (assicurandoti di scegliere il pacchetto a 32 bit se ffmpeg è a 32 bit, ecc.).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.