2009-12-14 06:49:35 +0000 2009-12-14 06:49:35 +0000
295
295

Cómo listar los archivos de un paquete Debian sin instalar

Este comando sólo puede listar el contenido de los paquetes instalados,

dpkg -L PACKAGENAME

pero ¿cómo listar el contenido de un paquete no instalado, para previsualizar/examinar el paquete?

Respuestas (8)

359
359
359
2009-12-14 15:42:54 +0000

dpkg -c (o --contents) lista el contenido de un archivo de paquete .deb (Es un front-end de dpkg-deb.)

dpkg -c package_file.deb

Para trabajar directamente con los nombres de los paquetes en lugar de los archivos de paquetes, puedes usar apt-file. (Puede que necesite instalar el paquete apt-file primero.)

sudo apt-file update        
apt-file list package_name

Como se indica en el primer comentario, apt-file lista los contenidos de los paquetes en sus repositorios de Apt ya configurados. Es irrelevante si algún paquete en particular está o no instalado.

58
58
58
2009-12-14 08:14:19 +0000

Usa --contents en lugar de -L:

dpkg --contents PACKAGENAME

Cuando se usa de esta manera, dpkg actúa como un front-end de dpkg-deb, así que usa man dpkg-deb para ver todas las opciones.

También puedes usar un navegador de archivos para ver el contenido del paquete.

23
23
23
2009-12-14 14:34:45 +0000

dpkg --contents le permitirá ver el paquete desinstalado. Si el .deb no está aún en su sistema, haga

apt-get --download-only install pkgname

El paquete se descargará a /var/cache/apt/archives pero no se instalará.

15
15
15
2013-06-01 13:57:56 +0000

La mejor manera sería navegar directamente por el repositorio de paquetes:

http://packages.debian.org/[distro name]/all/[package name]/filelist

Ejemplo:

http://packages.debian.org/wheezy/all/transmission-common/filelist

8
8
8
2015-04-21 21:44:25 +0000

Tomé @baldoz’s http idea y la generalizé para Ubuntu y Debian, añadí un poco de sed y la envolví en una función de bash de una línea:

function deb_list () { curl -s $(lsb_release -si | sed -e 's Ubuntu https://packages.ubuntu.com ' -e 's Debian https://packages.debian.org ')/$(lsb_release -sc)/all/$1/filelist | sed -n -e '/<pre>/,/<\/pre>/p' | sed -e 's/<[^>]>//g' -e '/^$/d'; }

Uso:

$ deb_list curl
/usr/bin/curl
/usr/share/doc/curl/changelog.Debian.gz
/usr/share/doc/curl/copyright
/usr/share/doc/curl/NEWS.Debian.gz
/usr/share/man/man1/curl.1.gz

La misma función en múltiples líneas:

function deb_list () {
    curl -s $(lsb_release -si \
                | sed -e 's Ubuntu https://packages.ubuntu.com ' \
                      -e 's Debian https://packages.debian.org '
              )/$(lsb_release -sc)/all/$1/filelist \
      | sed -n -e '/<pre>/,/<\/pre>/p' \
      | sed -e 's/<[^>]>//g' -e '/^$/d';
}

Explicado:

  1. lsb_release -si devuelve “Ubuntu” o “Debian” reemplace eso con la url base https://packages.ubuntu.com o https://packages.debian.org
  2. lsb_release -sc devuelve el nombre en clave (por ejemplo “trusty”, “sid”, etc) use eso para construir la URL completa: https://packages.ubuntu.com/trusty/all/curl/filelist
  3. 3. Obtener esa URL con curl y canalizar el html a través de tres comandos sed. El primero captura sólo la lista de archivos (lo que está entre las etiquetas <pre> y </pre>); el segundo elimina cualquier etiqueta html; el tercero elimina cualquier línea en blanco.

Nota: No busca PPAs, alterna repositorios de fuentes aptas y sólo consulta los paquetes oficiales disponibles para la versión de debian/ubuntu que esté ejecutando.

5
5
5
2017-01-06 03:14:29 +0000

Para todas aquellas personas que aún puedan estar buscando en Google este número en enero de 2017, pueden tener algunas cosas interesantes con las versiones recientes de apt y dpkg en Debian 8.5 sin necesidad de descargar nada.

Lista de contenidos del archivo deb sin descargar:

Primero localiza la url completa del archivo deb :

root@debian:apt-get --print-uris download yade
'http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb' yade_2016.06a-7_amd64.deb 1621148 SHA256:26c0d84484a92ae9c2828edaa63243eb764378d79191149970926aa3ec40cdd4

PS: –print-uris switch imprime la url del paquete deb pero deb no se descarga.

Luego muestra el contenido del paquete deb sin descargarlo:

root@debian:curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb" |dpkg-deb -c /dev/stdin
drwxr-xr-x root/root 0 2016-12-10 22:18 ./
drwxr-xr-x root/root 0 2016-12-10 22:18 ./usr/
drwxr-xr-x root/root 0 2016-12-10 22:18 ./usr/bin/
-rwxr-xr-x root/root 13184 2016-12-10 22:18 ./usr/bin/yade
.........................more files listed bellow ......................

PS: El mismo resultado se puede lograr con

root@debian:dpkg -c <(curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb")

*Extraer un archivo del paquete deb anterior , sin descargarlo. * Por ejemplo, queremos leer la página de manual del paquete yade sin instalar este paquete y sin siquiera descargar el paquete deb.

El nombre del archivo de la página de manual dentro del paquete deb como aconseja dpkg -c es ./usr/share/man/man1/yade.1.gz

Para leer la página de manual sobre la marcha:

root@debian:curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb" |dpkg-deb --fsys-tarfile /dev/stdin |tar -xO ./usr/share/man/man1/yade.1.gz |man /dev/stdin

La página de manual se muestra correctamente usando la aplicación de manual.

PS: La tubería de arriba no funciona con el comando ar.

root@debian:apt --version --> apt 1.4~beta2 (amd64)
root@debian:dpkg --version --> Debian 'dpkg' package management program version 1.18.18 (amd64).
root@debian:man --version --> man 2.7.6.1
root@debian:tar --version --> tar (GNU tar) 1.29
2
2
2
2014-06-27 15:28:37 +0000

Intente:

apt-get download packages-name
dpkg --contents *.deb
1
1
1
2015-12-27 13:33:51 +0000

Parece que no es posible antes de instalarlo primero o de extraer la lista del archivo .deb.

Prueba el siguiente comando:

dpkg --contents <(curl -s $(apt-get install --yes --no-download --reinstall --print-uris language-pack-en | tail -n1 | grep -o "http[^']"))

Cambia language-pack-en con el nombre de tu paquete.

Básicamente lee el archivo .deb extraído a través de curl y ejecuta dpkg --contents FILE en él.


También puede comprobar el contenido sin descargar el archivo del paquete.

Si conoce la URL del archivo .deb, el siguiente comando de shell listará todos los archivos del paquete:

dpkg -c <(curl -sL "http://httpredir.debian.org/debian/pool/main/a/avis/avis_1.2.2-4_all.deb")

Curl params: -s - silencioso, -L - sigue los enlaces movidos.

Si no conoce la URL, busque por: apt --print-uris, por ejemplo

apt --print-uris install avis | grep avis