Wie erhalte ich die Liste der installierten Bibliothekspakete?

12

Ich möchte die Liste der installierten Bibliothekspakete nur vom Terminal erhalten.

Gibt es einen Befehl dafür?

Avinash Raj
quelle

Antworten:

17
/sbin/ldconfig -p

Die Option -v zeigt die Bibliotheksversion an.

Ergebnis:

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

Wenn Sie diese Liste in eine Liste von Paketen umwandeln möchten , können Sie Folgendes tun:

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

Und Sie können das weiter massieren, um Fehler, nicht benötigte Komponenten und Duplikate auszuschneiden:

$ 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
...
Rinzwind
quelle
2

Ich bin mir nicht sicher, ob es eine garantierte Möglichkeit gibt, anhand eines Paketnamens zu erkennen, dass ein Paket eine "Bibliothek" ist (wenn dies auch nur eine solide Definition für sich ist), aber Sie können installierte Pakete finden, die libziemlich einfach beginnen und enden :

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

Einige Pakete enthalten "lib", die keine Bibliotheken sind. Sie müssen wahrscheinlich librarianund libreofficevon diesen ausschließen:

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

Dies wird immer noch einen Mangel an python-...Bibliotheken verpassen .

Oli
quelle
1

Und Eignung kam zur Rettung:

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

Es lautet: Sucht nach Paketen, die libsin ihrem enthalten sind ?sectionund die installiert sind ( ~i).

Mit dieser Option können Sie nur nach allen Bibliotheken in Ihrem Repository suchen:

aptitude search '?section(libs)'

Diese Methode braucht natürlich Eignung.

Braiam
quelle
Beachten Sie, dass dies funktioniert, wenn die Pakete den Debian-Richtlinien entsprechen. Wenn eine Bibliothek nicht im Bibliotheksabschnitt enthalten ist, wird sie nicht einbezogen, auch wenn es sich um eine Bibliothek handelt.
Braiam