Comment obtenir la liste des packages de bibliothèques installés uniquement?

12

Je souhaite obtenir la liste des packages de bibliothèque installés uniquement à partir du terminal.

Y a-t-il une commande pour cela?

Avinash Raj
la source

Réponses:

17
/sbin/ldconfig -p

L'option -v affichera la version des bibliothèques.

Résultat:

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

Si vous souhaitez transformer cette liste en une liste de packages , vous pouvez faire quelque chose comme ceci:

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

Et vous pouvez masser davantage pour éliminer les erreurs, les composants inutiles et les doublons:

$ 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
la source
2

Je ne suis pas sûr qu'il existe un moyen garanti de savoir à partir d'un nom de package qu'un package est une "bibliothèque" (si c'est même une définition solide en soi), mais vous pouvez trouver des packages installés qui commencent et se terminent libassez facilement:

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

Certains packages contiennent des "lib" qui ne sont pas des bibliothèques. Vous devrez probablement exclure librarianet libreofficede ceux-ci:

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

Cela va encore manquer une pénurie de python-...bibliothèques.

Oli
la source
1

Et l'aptitude est venue à la rescousse:

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

Il se lit comme suit: cherche des paquets qui contiennent libsdans leur ?sectionet qui sont installés ( ~i).

Vous pouvez l'utiliser pour rechercher uniquement toutes les bibliothèques de votre référentiel:

aptitude search '?section(libs)'

Cette méthode a évidemment besoin d'aptitude.

Braiam
la source
Remarque, cela fonctionnera si les paquets sont conformes aux politiques Debian. Si une bibliothèque n'est pas dans la section bibliothèque, elle ne sera pas incluse, même s'il s'agit d'une bibliothèque.
Braiam