Làm thế nào để có được danh sách các gói thư viện được cài đặt?


12

Tôi muốn nhận danh sách các gói thư viện đã cài đặt chỉ từ thiết bị đầu cuối.

Có lệnh nào cho điều đó không?

Câu trả lời:


17
/sbin/ldconfig -p

Tùy chọn -v sẽ hiển thị phiên bản thư viện.

Kết quả:

267 libs found in cache `/etc/ld.so.cache'
        libz.so.1 (libc6) => /usr/lib/libz.so.1
        libz.so (libc6) => /usr/lib/libz.so
        libxslt.so.1 (libc6) => /usr/lib/libxslt.so.1
        libxml2.so.2 (libc6) => /usr/lib/libxml2.so.2
        libxcb.so.1 (libc6) => /usr/lib/libxcb.so.1
        libxcb-xlib.so.0 (libc6) => /usr/lib/libxcb-xlib.so.0
        libwrap.so.0 (libc6) => /lib/libwrap.so.0
        libvolume_id.so.0 (libc6) => /lib/libvolume_id.so.0
        libuuid.so.1 (libc6) => /lib/libuuid.so.1
        libutil.so.1 (libc6, hwcap: 0x8008000000008000, OS ABI: Linux 2.6.8) => /lib/tls/i686/cmov/libutil.so.1
        libutil.so.1 (libc6, OS ABI: Linux 2.6.8) => /lib/libutil.so.1
        libutil.so (libc6, OS ABI: Linux 2.6.8) => /usr/lib/libutil.so
        libusb-0.1.so.4 (libc6) => /lib/libusb-0.1.so.4
        libusb-0.1.so.4 (libc6) => /usr/lib/libusb-0.1.so.4
        libulockmgr.so.1 (libc6) => /lib/libulockmgr.so.1
        libt1x.so.5 (libc6) => /usr/lib/libt1x.so.5
        libt1.so.5 (libc6) => /usr/lib/libt1.so.5
        libtiff.so.4 (libc6) => /usr/lib/libtiff.so.4
        libticw.so.5 (libc6) => /lib/libticw.so.5

Nếu bạn muốn biến danh sách đó thành một danh sách các gói , bạn có thể làm một cái gì đó như thế này:

dpkg -S $(/sbin/ldconfig -p | awk 'NR>1 { print $NF }')

Và bạn có thể xoa bóp thêm để loại bỏ lỗi, các thành phần không cần thiết và trùng lặp:

$ dpkg -S $(/sbin/ldconfig -p | awk 'NR>1 { print $NF }') 2>/dev/null | sed 's/\: .*$//' | sort -u
akregator
ark
binutils
calligra-libs
comerr-dev
compiz-core
dolphin
e2fslibs:amd64
freeglut3:amd64
gettext
...

2

Tôi không chắc chắn có một cách được đảm bảo để biết từ tên gói rằng gói là "thư viện" (nếu đó thậm chí là một định nghĩa chắc chắn) nhưng bạn có thể tìm thấy các gói được cài đặt bắt đầu và kết thúc libkhá dễ dàng:

dpkg -l | awk '($1 == "ii") && ($2 ~ /^lib|lib$/) { print $2 }'

Một số gói chứa "lib" không phải là thư viện. Có lẽ bạn sẽ cần loại trừ librarianlibreofficekhỏi những thứ đó:

dpkg -l | awk '($1 == "ii") && ($2 ~ /^lib|lib$/) && ($2 !~ /^(libreoffice|librarian)/) { print $2 }'

Điều này vẫn sẽ bỏ lỡ một loạt các python-...thư viện.


1

Và năng khiếu đã đến để giải cứu:

aptitude search '?and(?section(libs), ~i)'

Nó đọc: tìm kiếm các gói chứa libstrong chúng ?sectionvà được cài đặt ( ~i).

Bạn có thể sử dụng điều này để tìm kiếm tất cả các thư viện trong kho lưu trữ của bạn:

aptitude search '?section(libs)'

Phương pháp này rõ ràng cần năng khiếu.


Lưu ý, điều này sẽ hoạt động nếu các gói tuân thủ chính sách Debian. Nếu một thư viện không nằm trong phần thư viện, thì nó sẽ không được bao gồm, ngay cả khi đó là thư viện.
Braiam
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.