Como obter apenas a lista de pacotes de bibliotecas instalados?

12

Quero obter a lista de pacotes de bibliotecas instalados apenas no terminal.

Existe algum comando para isso?

Avinash Raj
fonte

Respostas:

17
/sbin/ldconfig -p

A opção -v mostrará a versão das bibliotecas.

Resultado:

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 você deseja transformar essa lista em uma lista de pacotes , pode fazer algo assim:

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

E você também pode massagear isso para eliminar erros, componentes desnecessários e duplicatas:

$ 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
fonte
2

Não sei se existe uma maneira garantida de saber, a partir de um nome de pacote, que um pacote é uma "biblioteca" (mesmo que seja uma definição sólida), mas você pode encontrar pacotes instalados que iniciam e terminam com libbastante facilidade:

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

Alguns pacotes contêm "lib" que não são bibliotecas. Você provavelmente precisará excluir librariane libreofficedesses:

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

Isso ainda vai perder uma escassez de python-...bibliotecas.

Oli
fonte
1

E a aptidão veio em socorro:

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

Ele lê: procura pacotes que contenham libsem seus ?sectione que estão instalados ( ~i).

Você pode usar isso para procurar apenas todas as bibliotecas do seu repositório:

aptitude search '?section(libs)'

Esse método obviamente precisa de aptidão.

Braiam
fonte
Note, isso funcionará se os pacotes estiverem em conformidade com as políticas Debian. Se uma biblioteca não estiver na seção da biblioteca, ela não será incluída, mesmo que seja uma biblioteca.
Braiam