Este comando solo puede mostrar el contenido de los paquetes instalados,
dpkg -L PACKAGENAME
pero, ¿cómo enumerar el contenido de un paquete no instalado para obtener una vista previa / examinar el paquete?
Este comando solo puede mostrar el contenido de los paquetes instalados,
dpkg -L PACKAGENAME
pero, ¿cómo enumerar el contenido de un paquete no instalado para obtener una vista previa / examinar el paquete?
Respuestas:
dpkg -c
(o --contents
) enumera el contenido de un archivo de paquete .deb (es un front-end para dpkg-deb
).
dpkg -c package_file.deb
Para trabajar directamente con nombres de paquetes en lugar de archivos de paquetes, puede usar apt-file
. (Es posible que apt-file
primero necesite instalar el paquete).
sudo apt-file update
apt-file list package_name
Como se indicó en el primer comentario, apt-file enumera el contenido de los paquetes en sus repositorios Apt ya configurados. Es irrelevante si algún paquete en particular está o no instalado.
sudo apt-file update
), y solo enumera el contenido de los paquetes en sus repositorios Apt ya configurados.
dpkg -c
¡bonito!
.deb
archivo que ha descargado por separado. Sin embargo, la pregunta original es ambigua.
Usar en --contents
lugar de -L
:
dpkg --contents PACKAGENAME
Cuando se usa de esta manera, dpkg
actúa como un front-end para dpkg-deb
, así que use man dpkg-deb
para ver todas las opciones.
También puede usar un navegador de archivos para ver el contenido del paquete.
dpkg --contents google-chrome-stable_current_amd64.deb
y enumeró todos los archivos que instalará (principalmente /opt/google/chrome
), ninguno de los cuales está instalado actualmente en mi sistema mientras escribo esto. (Estoy ejecutando Xubuntu 11.10 si eso importa).
dpkg --contents
le permitirá ver el paquete desinstalado. Si el .deb aún no está en su sistema, haga
apt-get --download-only install pkgname
El paquete se descargará /var/cache/apt/archives
pero no se instalará.
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
lynx -dump -nolist http://packages.debian.org/wheezy/all/transmission-common/filelist | grep ^/
(siempre que haya lynx
instalado).
Tomé @ http idea de Baldoz y generalizada que para Ubuntu y Debian, añadí un poco sed
, lo envolvió en una función fiesta de una sola 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
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:
https://packages.ubuntu.com
ohttps://packages.debian.org
https://packages.ubuntu.com/trusty/all/curl/filelist
<pre>
y </pre>
etiquetas); el segundo elimina cualquier etiqueta html; tercero elimina las líneas en blanco.Nota: No busca PPA, repositorios alternativos de fuentes apt y solo consulta los paquetes oficiales disponibles para el lanzamiento de debian / ubuntu que está ejecutando.
Para todas aquellas personas que aún podrían buscar en Google este problema en enero de 2017, pueden tener algunas cosas interesantes con versiones recientes de apt y dpkg en Debian 8.5 sin descargar nada.
Contenido de la lista del archivo Deb sin descargar:
Primero ubique 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
PD: el interruptor --print-uris imprime la url del paquete deb pero deb no se descarga.
Luego muestre 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 ......................
PD: Se puede lograr el mismo resultado con
root@debian:dpkg -c <(curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb")
Extraiga un archivo del paquete deb anterior, sin descargar.
Por ejemplo, queremos leer la página de manual del paquete yade sin instalar este paquete y sin siquiera descargar el paquete deb.
Nombre de archivo de la página del manual dentro del paquete de Deb según lo aconsejado 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 man se muestra correctamente usando la aplicación man.
PD: las tuberías anteriores no funcionan 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
Parece que no es posible antes de instalarlo primero o extraer la lista del .deb
archivo.
Pruebe el siguiente comando:
dpkg --contents <(curl -s $(apt-get install --yes --no-download --reinstall --print-uris language-pack-en | tail -n1 | grep -o "http[^']\+"))
Cambiar language-pack-en
con el nombre de su paquete.
Básicamente, lee el .deb
archivo extraído curl
y se ejecuta dpkg --contents FILE
en él.
También puede verificar el contenido sin descargar el archivo del paquete.
Entonces, si conoce la URL del .deb
archivo, el siguiente comando de shell mostrará una lista de 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")
Parámetros de rizo: -s
- silencio, -L
- seguir enlaces movidos.
Si no conoce la URL, busque: apt --print-uris
p. Ej.
apt --print-uris install avis | grep avis