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?
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:
/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
...
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 lib
khá 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ừ librarian
và libreoffice
khỏ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.
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 libs
trong chúng ?section
và đượ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.