Come ottenere l'elenco dei soli pacchetti di libreria installati?


12

Voglio ottenere l'elenco dei pacchetti di libreria installati solo dal terminale.

C'è qualche comando per quello?

Risposte:


17
/sbin/ldconfig -p

L'opzione -v mostrerà la versione delle librerie.

Risultato:

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

Se vuoi trasformare quell'elenco in un elenco di pacchetti , puoi fare qualcosa del genere:

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

E puoi massaggiarlo ulteriormente per eliminare errori, componenti non necessari e duplicati:

$ 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

Non sono sicuro che ci sia un modo garantito per sapere dal nome di un pacchetto che un pacchetto è una "libreria" (se questa è anche una definizione solida in sé) ma puoi trovare pacchetti installati che iniziano e finiscono in modo libabbastanza semplice:

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

Alcuni pacchetti contengono "lib" che non sono librerie. Probabilmente dovrai escludere librariane libreofficeda quelli:

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

Questo mancherà ancora di una carenza di python-...biblioteche.


1

E l'attitudine venne in soccorso:

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

Si legge: cerca i pacchetti che contengono libsnei loro ?sectione che sono installati ( ~i).

Puoi usarlo per cercare solo tutte le librerie nel tuo repository:

aptitude search '?section(libs)'

Questo metodo ha ovviamente bisogno di attitudine.


Nota, questo funzionerà se i pacchetti sono conformi alle politiche Debian. Se una libreria non si trova nella sezione della libreria, non verrà inclusa, anche se si tratta di una libreria.
— Braiam
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.