¿Cómo obtener la lista de paquetes de biblioteca instalados únicamente?

12

Quiero obtener la lista de paquetes de biblioteca instalados solo desde la terminal.

¿Hay algún comando para eso?

Avinash Raj
fuente

Respuestas:

17
/sbin/ldconfig -p

La opción -v mostrará la versión de las 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

Si desea convertir esa lista en una lista de paquetes , puede hacer algo como esto:

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

Y puede dar un masaje adicional para eliminar errores, componentes innecesarios y duplicados:

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

No estoy seguro de que haya una forma garantizada de saber por un nombre de paquete que un paquete es una "biblioteca" (si es una definición sólida en sí misma), pero puede encontrar paquetes instalados que comienzan y terminan con libbastante facilidad:

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

Algunos paquetes contienen "lib" que no son bibliotecas. Probablemente deba excluir librariany libreofficede esos:

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

Esto todavía va a perder una escasez de python-...bibliotecas.

Oli
fuente
1

Y la aptitud vino al rescate:

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

Se lee: busca los paquetes que contiene libsen su ?sectiony que están instalados ( ~i).

Puede usar esto para buscar todas las bibliotecas en su repositorio:

aptitude search '?section(libs)'

Este método obviamente necesita aptitud.

Braiam
fuente
Tenga en cuenta que esto funcionará si los paquetes cumplen con las políticas de Debian. Si una biblioteca no está en la sección de la biblioteca, entonces no se incluirá, incluso si es una biblioteca.
Braiam