Як перевірити, чи встановлена ​​спільна бібліотека?


14

Моє запитання пов'язане з моєю проблемою щодо запуску ffmpeg. Я встановив ffmpeg, і він відображається як встановлений:

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

Пізніше я зрозумів, що деякі програми залежать від бібліотек, які не поставляються із самою установкою, тому я перевірив командою ldd, чого не вистачає:

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

Як виявляється, мій ffmpeg відрізаний від 7 бібліотек теж працює. Я спершу подумав, що кожну з цих бібліотек потрібно встановити, але, ніж я зрозумів, що деякі або всі можуть бути встановлені, але ffmpeg невідомо їх розташування. Я прочитав, що /etc/ld.so.conf та /etc/ld.so.cache містять шляхи до бібліотек, але я був розгублений, оскільки в ньому був лише один рядок

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

але дуже довго /etc/ld.so.cache.

Зараз я перебуваю в тій точці, коли я відчуваю себе втраченою, як слід досліджувати далі. Можливо, буде корисним наступний крок, щоб з’ясувати, як я можу визначити, чи дійсно встановлена ​​певна бібліотека, навіть якщо її 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:

Який розподіл / ОС? Чи є якась причина, що ви не використовуєте ffmpeg у своєму розповсюдженні?
Faheem Mitha

Я використовую кодову назву монетного двору Linux Rebecca, ffmpeg ще не був встановлений у моєму дистрибутиві, коли я спробував встановити його "apt-get install ffmpeg", виявилося, що ffmpeg не було (лише ключове слово в інших програмах), я додав сховище, де він був включений і міг його встановити, але після того, як "ldd / usr / bin / ffmpeg" я виявив, що ffmpeg не вистачало деяких бібліотек, я намагався встановити ці бібліотеки, ввівши їх імена в apt-get, але їх не вдалося знайти.
Абдул Аль Хазред

Просто кажучи, ffmpeg може стати справжнім болем у попці, щоб встановити. Можна краще використовувати статичну установку від git. Ось такий, який був створений доброю душею, щоб врятувати вас від головних болів: johnvansickle.com/ffmpeg
Baazigar

Це допоможе, якби ви сказали нам, з якого сховища ви встановили його. :-) Крім того, чи можете ви вставити результати apt-get -f installсвого запитання? Примітка: ubuntu заснований на Ubuntu 14.04, тож ви можете подивитися там, якщо ffmpeg не включений у ваш дистрибутив.
Faheem Mitha

Я не можу згадати ім’я сховища, але це було схоже на ім’я прізвища, яке закінчується у сина, коли я намагався шукати його в /etc/apt/sources.list /etc/apt/sources.list.d /
Абдул Аль Хазред

Відповіді:


5

Знайдіть у / usr / lib та / usr / lib64 для цих бібліотек. Якщо ви знайдете один із тих, хто ffmpeg відсутній, позначте його так, щоб він існував в іншому каталозі.

Ви також можете запустити знахідку для "libm.so.6" і подивитися, де знаходиться цей файл. Є хороший шанс ffmpeg шукати в тому самому каталозі відсутніх. Symlink там, як тільки ви їх знайдете.

Якщо їх немає на вашому сервері, встановіть пакет, що включає їх. Якщо вони включені в пакет ffmpeg, але ви їх не бачите, спробуйте перевстановити ffmpeg.


Отже, якщо його не існує в / usr / lib або / usr / lib64, він напевно на 100 відсотків не встановлений?
Абдул Аль Хазред

Якщо його немає в / usr / lib або / usr / lib64, швидше за все, він не встановлений. Установка ffmpeg може бути дуже важкою, щоб працювати ffmpeg так, як люди очікують, вам часто потрібен ffmpeg і щось інше. Іноді численні «щось ельси». Я настійно пропоную використовувати статичну збірку, якщо ви не віддасте перевагу через ручну установку, що зрозуміло.
Баазігар

Я не знаю, що таке статична збірка ....
Абдул Аль Хазред

1
Статичні засоби збірки ffmpeg та пов'язані з ними інструменти були зібрані для всіх спільних робіт лише з одного каталогу. Коли ви використовуєте git, щоб перетягнути це на свій сервер, у вас є все в одному місці, щоб не виникало питання про бібліотеки чи що-небудь інше. Так би мовити, все в одному "ящику", все, що вам потрібно зробити, - це встановити свої директиви, щоб вказувати на це. Ось, де ви можете прочитати більше про нього та отримати його: johnvansickle.com/ffmpeg
Baazigar

27

Ви можете використовувати:

ldconfig -p | grep libavfilter

Якщо виводу немає, бібліотека не встановлена. Я не впевнений, чи надійно це на 100%.
Принаймні, на сторінці man ldconfigдля параметра -p:

Роздрукуйте списки каталогів та кандидатських бібліотек, що зберігаються в поточному кеші.


1

Використовуйте команду, file `which ffmpeg`щоб визначити, чи ffmpegкомпілюється він для 64-розрядних чи 32-розрядних. Якщо він 64-розрядний, знайдіть бібліотеки в /usr/lib64. Якщо він 32-бітний, то шукайте бібліотеки в /usr/lib. Якщо ffmpegстатично пов'язано, то це не має значення ... він не використовуватиме жодних спільних бібліотек, і результат цього fileтакож вам скаже.

Не пов'язуйте символічно бібліотеки між /usr/libта /usr/lib64. Це не допоможе вам, оскільки для 64-розрядної програми знадобляться 64-бітні бібліотеки (знайдені в /usr/lib64), а 32-розрядна програма потребуватиме 32-розрядні бібліотеки (знайдені в /usr/lib32).

Якщо бібліотеки не існують на вашому сервері, встановіть пакет, який їх надає (переконайтеся, що ви вибрали 32-бітний пакет, якщо ffmpeg 32-бітний тощо).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.