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?

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
...

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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.