จะรับรายการแพ็คเกจไลบรารีที่ติดตั้งได้อย่างไร


12

ฉันต้องการรับรายการแพคเกจไลบรารีที่ติดตั้งจากเทอร์มินัลเท่านั้น

มีคำสั่งสำหรับสิ่งนั้นหรือไม่?

คำตอบ:


17
/sbin/ldconfig -p

ตัวเลือก -v จะแสดงเวอร์ชันของไลบรารี

ผลลัพธ์:

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

หากคุณต้องการเปลี่ยนรายการนั้นเป็นรายการแพ็คเกจคุณสามารถทำสิ่งนี้:

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

และคุณสามารถนวดเพิ่มเติมเพื่อตัดข้อผิดพลาดส่วนประกอบที่ไม่จำเป็นและรายการซ้ำ:

$ 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

ฉันไม่แน่ใจว่ามีวิธีการรับประกันที่จะรู้จากชื่อแพคเกจว่าแพคเกจเป็น "ไลบรารี่" (ถ้านั่นเป็นคำนิยามที่มั่นคงในตัวเอง) แต่คุณสามารถค้นหาแพ็คเกจที่ติดตั้งซึ่งเริ่มต้นและสิ้นสุดlibได้อย่างง่ายดาย:

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

บางแพ็คเกจมี "lib" ที่ไม่ใช่ไลบรารี คุณอาจจะจำเป็นต้องยกเว้นlibrarianและlibreofficeจากผู้ที่อยู่:

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

สิ่งนี้ยังคงพลาดไม่ได้กับความขาดแคลนของpython-...ห้องสมุด


1

และความถนัดก็มาถึงการช่วยเหลือ

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

อ่านแล้ว: ค้นหาแพ็คเกจที่มีlibsอยู่ในแพ็คเกจ?sectionและติดตั้ง ( ~i)

คุณสามารถใช้สิ่งนี้เพื่อค้นหาไลบรารีทั้งหมดในที่เก็บของคุณ:

aptitude search '?section(libs)'

เห็นได้ชัดว่าวิธีนี้ต้องการความถนัด


หมายเหตุจะใช้งานได้หากแพ็คเกจปฏิบัติตามนโยบาย Debian หากห้องสมุดไม่ได้อยู่ในส่วนห้องสมุดก็จะไม่ถูกรวมแม้ว่าจะเป็นห้องสมุดก็ตาม
Braiam
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.