Bagaimana cara memeriksa apakah perpustakaan bersama diinstal?

14

Pertanyaan saya berasal dari masalah saya dalam memulai ffmpeg. Saya telah menginstal ffmpeg dan ditampilkan sebagai terinstal:

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

Kemudian, saya menemukan, bahwa beberapa program bergantung pada pustaka yang tidak datang dengan instalasi itu sendiri, jadi saya memeriksa dengan perintah ldd apa yang hilang:

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

Ternyata ffmpeg saya terputus dari 7 perpustakaan juga bekerja. Saya pertama kali berpikir bahwa masing-masing perpustakaan harus diinstal, tetapi daripada yang saya tahu, bahwa beberapa atau semua mungkin diinstal, tetapi lokasinya tidak diketahui oleh ffmpeg. Saya membaca bahwa /etc/ld.so.conf dan /etc/ld.so.cache berisi path ke pustaka, tetapi saya bingung, karena, hanya ada satu baris di

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

tapi sangat panjang /etc/ld.so.cache.

Saya sekarang pada titik di mana saya merasa kehilangan cara untuk menyelidiki lebih lanjut, Mungkin ini merupakan langkah selanjutnya yang bermanfaat untuk mencari tahu, bagaimana saya dapat menentukan apakah perpustakaan yang diberikan memang diinstal bahkan jika lokasinya tidak diketahui oleh 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
sumber
Apa distribusi / OS Anda? Apakah ada alasan Anda tidak menggunakan ffmpeg dari distribusi Anda?
Faheem Mitha
Saya menggunakan Linux mint codename Rebecca, ffmpeg belum diinstal pada distribusi saya, ketika saya mencoba menginstalnya dengan "apt-get install ffmpeg" ternyata tidak ada ffmpeg (hanya kata kunci di program lain), saya menambahkan repositori di mana itu dimasukkan dan dapat menginstalnya, tetapi setelah "ldd / usr / bin / ffmpeg" saya menemukan ffmpeg kehilangan beberapa perpustakaan, saya mencoba menginstal perpustakaan itu dengan mengetikkan nama mereka di apt-get tetapi mereka tidak dapat ditemukan dengan cara ini.
Abdul Al Hazred
Hanya mengatakan, ffmpeg bisa sangat menyebalkan untuk diinstal. Akan lebih baik menggunakan instalasi statis dari git. Inilah salah satu yang diciptakan oleh jiwa yang baik hati untuk menyelamatkan Anda dari sakit kepala: johnvansickle.com/ffmpeg
Baazigar
Ini akan membantu jika Anda memberi tahu kami dari mana Anda menginstalnya. :-) Juga, bisakah Anda menempelkan output apt-get -f installke pertanyaan Anda? Catatan: ubuntu didasarkan pada Ubuntu 14.04, jadi Anda bisa melihat di sana jika ffmpeg tidak termasuk dalam distribusi Anda.
Faheem Mitha
Saya tidak dapat mengingat nama repositori, tetapi itu seperti nama nama keluarga yang berakhir dengan putra, ketika saya mencoba mencarinya di /etc/apt/sources.list /etc/apt/sources.list.d /
Abdul Al Hazred

Jawaban:

5

Lihat di / usr / lib dan / usr / lib64 untuk pustaka tersebut. Jika Anda menemukan salah satu dari yang ffmpeg hilang, symlink itu sehingga ada di direktori lain.

Anda juga dapat menjalankan pencarian untuk 'libm.so.6' dan melihat di mana file itu berada. Ada kemungkinan bagus ffmpeg mencari di direktori yang sama untuk yang hilang. Simbolkan mereka di sana setelah Anda menemukannya.

Jika tidak ada di server Anda, instal paket yang menyertakannya. Jika mereka termasuk dalam paket ffmpeg tetapi Anda tidak melihatnya, coba instal ulang ffmpeg.

Baazigar
sumber
Jadi jika itu tidak ada di / usr / lib atau / usr / lib64 itu pasti 100 persen tidak diinstal?
Abdul Al Hazred
Jika tidak ada di / usr / lib atau / usr / lib64 kemungkinan besar tidak diinstal. Instalasi ffmpeg bisa sangat sulit, untuk membuat ffmpeg bekerja seperti yang diharapkan orang, Anda sering membutuhkan ffmpeg dan yang lainnya. Terkadang banyak 'sesuatu yang elses'. Saya sangat menyarankan menggunakan build statis kecuali Anda lebih suka menderita melalui instalasi manual, yang dapat dimengerti.
Baazigar
Saya tidak tahu apakah bangunan statis itu ...
Abdul Al Hazred
1
Static build berarti ffmpeg dan alat terkait telah dikompilasi untuk semua bekerja bersama hanya dari satu direktori. Ketika Anda menggunakan git untuk menariknya ke server Anda, Anda memiliki segalanya di satu tempat itu sehingga tidak ada pertanyaan tentang perpustakaan atau apa pun. Itu semua datang dalam satu 'kotak' sehingga untuk berbicara, yang harus Anda lakukan adalah mengatur arahan Anda untuk mengarahkannya. Di sinilah Anda dapat membaca lebih lanjut tentang hal itu dan mendapatkannya: johnvansickle.com/ffmpeg
Baazigar
27

Kamu bisa memakai:

ldconfig -p | grep libavfilter

Jika tidak ada perpustakaan output tidak diinstal. Saya tidak yakin apakah ini 100% dapat diandalkan.
Setidaknya di halaman manual ldconfiguntuk opsi -p:

Cetak daftar direktori dan perpustakaan yang tersimpan di cache saat ini.

taliezin
sumber
1

Gunakan perintah file `which ffmpeg`untuk menentukan apakah ffmpegdikompilasi untuk 64-bit atau 32-bit. Jika 64-bit, cari perpustakaan di /usr/lib64. Jika 32-bit maka cari perpustakaan di /usr/lib. Jika ffmpegditautkan secara statis maka itu tidak masalah ... itu tidak akan menggunakan pustaka bersama dan output fileakan memberitahu Anda itu juga.

Jangan menghubungkan perpustakaan secara simbolis antara /usr/libdan /usr/lib64. Ini tidak akan membantu Anda karena program 64-bit akan membutuhkan pustaka 64-bit (ditemukan di /usr/lib64) dan program 32-bit akan membutuhkan pustaka 32-bit (ditemukan di /usr/lib32).

Jika pustaka tidak ada di server Anda, instal paket yang menyediakannya (pastikan Anda memilih paket 32-bit jika ffmpeg adalah 32-bit, dll).

gmorganVA
sumber