Làm thế nào để kiểm tra nếu một thư viện chia sẻ được cài đặt?


14

Câu hỏi của tôi bắt nguồn từ vấn đề của tôi trong việc bắt đầu ffmpeg. Tôi đã cài đặt ffmpeg và nó được hiển thị như đã cài đặt:

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

Sau đó, tôi nhận ra rằng một số chương trình phụ thuộc vào các thư viện không đi kèm với bản cài đặt, vì vậy tôi đã kiểm tra bằng lệnh ldd những gì còn thiếu:

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

Hóa ra ffmpeg của tôi bị cắt khỏi 7 thư viện quá hoạt động. Đầu tiên tôi nghĩ rằng mỗi thư viện đó phải được cài đặt, nhưng hơn tôi nghĩ, một số hoặc tất cả có thể được cài đặt, nhưng vị trí của chúng không xác định được với ffmpeg. Tôi đọc rằng /etc/ld.so.conf và /etc/ld.so.cache chứa các đường dẫn đến thư viện, nhưng tôi đã nhầm lẫn, bởi vì, chỉ có một dòng trong

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

nhưng một rất dài /etc/ld.so.cache.

Bây giờ tôi đang ở thời điểm mà tôi cảm thấy lạc lõng khi điều tra thêm, Đây có thể là bước tiếp theo hữu ích để tìm hiểu, làm thế nào tôi có thể xác định xem một thư viện nhất định có thực sự được cài đặt ngay cả khi vị trí của nó không được biết đến với 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:

Phân phối / HĐH của bạn là gì? Có một số lý do bạn không sử dụng ffmpeg từ bản phân phối của mình?
Faheem Mitha

Tôi sử dụng tên mã Linux mint Rebecca, ffmpeg chưa được cài đặt trên bản phân phối của tôi, khi tôi cố gắng cài đặt nó bằng "apt-get install ffmpeg" hóa ra không có ffmpeg (chỉ có từ khóa trong các chương trình khác), tôi đã thêm một kho lưu trữ trong đó nó được bao gồm và có thể cài đặt nó, nhưng sau khi "ldd / usr / bin / ffmpeg" tôi phát hiện ra ffmpeg bị thiếu một số thư viện, tôi đã cố gắng cài đặt các thư viện đó bằng cách gõ tên của họ vào apt-get nhưng không thể tìm thấy chúng theo cách này.
Abdul Al Hazred

Chỉ cần nói, ffmpeg có thể là một nỗi đau thực sự trong ass để cài đặt. Có thể tốt hơn để sử dụng một cài đặt tĩnh từ git. Đây là một thứ được tạo ra bởi một linh hồn tốt bụng để cứu bạn khỏi những cơn đau đầu: johnvansickle.com/ffmpeg
Baazigar

Nó sẽ giúp nếu bạn cho chúng tôi biết bạn đã cài đặt kho lưu trữ nào. :-) Ngoài ra, bạn có thể dán đầu ra của apt-get -f installcâu hỏi của bạn không? Lưu ý: ubfox dựa trên Ubuntu 14.04, vì vậy bạn có thể xem ở đó nếu ffmpeg không được bao gồm trong bản phân phối của bạn.
Faheem Mitha

Tôi không thể nhớ tên của kho lưu trữ, nhưng nó giống như tên của họ kết thúc bằng con trai, khi tôi cố gắng tìm nó trong /etc/apt/source.list /etc/apt/source.list.d /
Abdul Al Hazred

Câu trả lời:


5

Tìm trong / usr / lib và / usr / lib64 cho các thư viện đó. Nếu bạn tìm thấy một trong những ffmpeg bị thiếu, hãy liên kết nó để nó tồn tại trong thư mục khác.

Bạn cũng có thể chạy một tìm kiếm cho 'libm.so.6' và xem tập tin đó ở đâu. Có một cơ hội tốt ffmpeg đang tìm kiếm trong cùng thư mục cho những người mất tích. Symlink chúng ở đó một khi bạn tìm thấy chúng.

Nếu chúng không tồn tại trên máy chủ của bạn, hãy cài đặt gói bao gồm chúng. Nếu chúng được bao gồm trong gói ffmpeg nhưng bạn không thấy chúng, hãy thử cài đặt lại ffmpeg.


Vì vậy, nếu nó không tồn tại trong / usr / lib hoặc / usr / lib64 thì chắc chắn 100% chưa được cài đặt?
Abdul Al Hazred

Nếu nó không tồn tại trong / usr / lib hoặc / usr / lib64 thì rất có thể nó không được cài đặt. Cài đặt ffmpeg có thể rất khó khăn, để ffmpeg hoạt động như mọi người mong đợi, bạn thường cần ffmpeg và một cái gì đó khác. Đôi khi vô số 'cái gì đó elses'. Tôi đặc biệt khuyên bạn nên sử dụng bản dựng tĩnh trừ khi bạn muốn chịu đựng thông qua cài đặt thủ công, đây là điều dễ hiểu.
Baazigar

Tôi không biết bản dựng tĩnh là gì ....
Abdul Al Hazred

1
Xây dựng tĩnh có nghĩa là ffmpeg và các công cụ liên quan đã được biên dịch để tất cả hoạt động cùng nhau chỉ trong một thư mục. Khi bạn sử dụng git để kéo nó xuống máy chủ của mình, bạn có mọi thứ ở một nơi đó để không có câu hỏi về thư viện hay bất cứ điều gì. Nó xuất hiện tất cả trong một 'hộp' để nói, tất cả những gì bạn phải làm là đặt các chỉ thị của bạn để chỉ vào nó. Đây là nơi bạn có thể đọc thêm về nó và lấy nó: johnvansickle.com/ffmpeg
Baazigar

26

Bạn có thể dùng:

ldconfig -p | grep libavfilter

Nếu không có thư viện đầu ra không được cài đặt. Tôi không chắc chắn nếu điều này là đáng tin cậy 100%.
Ít nhất trong trang man của ldconfigtùy chọn -p:

In danh sách các thư mục và thư viện ứng cử viên được lưu trữ trong bộ đệm hiện tại.


1

Sử dụng lệnh file `which ffmpeg`để xác định xem ffmpegđược biên dịch cho 64 bit hay 32 bit. Nếu nó là 64 bit, hãy tìm các thư viện trong /usr/lib64. Nếu nó là 32-bit thì hãy tìm các thư viện trong /usr/lib. Nếu ffmpegđược liên kết tĩnh thì không vấn đề gì ... nó sẽ không sử dụng bất kỳ thư viện dùng chung nào và đầu ra của filenó cũng sẽ cho bạn biết điều đó.

Không tượng trưng liên kết các thư viện giữa /usr/lib/usr/lib64. Điều này sẽ không giúp bạn vì chương trình 64 bit sẽ cần thư viện 64 bit (tìm thấy trong /usr/lib64) và chương trình 32 bit sẽ cần thư viện 32 bit (tìm thấy trong /usr/lib32).

Nếu các thư viện không tồn tại trên máy chủ của bạn, hãy cài đặt gói cung cấp chúng (đảm bảo bạn chọn gói 32 bit nếu ffmpeg là 32 bit, v.v.).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.