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-fileprimero 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.
apt-file también necesita ser actualizado ( sudo apt-file update), y solo enumera el contenido de los paquetes en sus repositorios Apt ya configurados.
quack quijote
1
@quackquixote: en Ubuntu 12.04 es automático
confiq
1
dpkg -c¡bonito!
d -_- b
2
La respuesta del archivo Apt supone que su paquete proviene de un repositorio configurado en lugar de un .debarchivo que ha descargado por separado. Sin embargo, la pregunta original es ambigua.
Zoredache
55
@confiq, no según mis pruebas. Estoy ejecutando 12.04.4 y aún dice "E: el caché está vacío. Primero debes ejecutar 'apt-file update'".
Matthew Flaschen
58
Usar en --contentslugar de -L:
dpkg --contents PACKAGENAME
Cuando se usa de esta manera, dpkgactúa como un front-end para dpkg-deb, así que use man dpkg-debpara ver todas las opciones.
También puede usar un navegador de archivos para ver el contenido del paquete.
Esto no funciona a menos que lo instale primero y luego lo desinstale.
Xiè Jìléi
3
debería funcionar bien si le das un archivo .deb como argumento (en lugar de PACKAGENAME, dale PACKAGE-DEB-FILE).
quack quijote
3
Esta respuesta es incorrecta. Primero debe tener el paquete instalado. Si no lo tiene instalado, entonces no tiene un archivo .deb.
Neil
Este comando me funciona. Por ejemplo, descargué google-chrome-stable_current_amd64.deb de Google. Luego emitió el comando: dpkg --contents google-chrome-stable_current_amd64.deby 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).
quux00
10
@Neil, la respuesta no es incorrecta. El hecho de que tenga un archivo deb no significa que esté instalado. apt-file necesita todo el paquete build-essential. OO
d -_- b
21
dpkg --contentsle 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/archivespero no se instalará.
¿Puedo enumerar el contenido sin descargarlo? Si estoy en una conexión muy lenta, y si el paquete es demasiado grande para descargar. Si el archivo .deb tiene un encabezado de archivo donde va la lista de contenido, supongo que puede que no sea necesario descargar todo el paquete. es posible?
Xiè Jìléi
13
La mejor manera sería navegar directamente por el repositorio de paquetes:
Y para evitar salir del terminal, puede usar, por ejemplo, lynx -dump -nolist http://packages.debian.org/wheezy/all/transmission-common/filelist | grep ^/(siempre que haya lynxinstalado).
Ruslan
8
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'; }
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:
lsb_release -si devuelve "Ubuntu" o "Debian", reemplácelo con la url base https://packages.ubuntu.comohttps://packages.debian.org
lsb_Release -sc devuelve el nombre en clave (p. ej., "confiable", "sid", etc.) utilícelo para construir la URL completa: https://packages.ubuntu.com/trusty/all/curl/filelist
Obtenga esa URL con curl y canalice el html a través de tres comandos sed. Primero captura solo la lista de archivos (qué hay entre <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.
@Anwar, inicialmente usé Ruby porque era vago y las expresiones regulares multilínea apestaban en sed / awk / grep. Pero lo he reescrito para usar dos comandos sed, no se requiere Ruby.
notpeter 01 de
¡Agradable! Esta es la respuesta que estaba buscando
Anwar
4
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:
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 -ces./usr/share/man/man1/yade.1.gz
Respuestas:
dpkg -c
(o--contents
) enumera el contenido de un archivo de paquete .deb (es un front-end paradpkg-deb
).Para trabajar directamente con nombres de paquetes en lugar de archivos de paquetes, puede usar
apt-file
. (Es posible queapt-file
primero necesite instalar el paquete).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.
fuente
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
:Cuando se usa de esta manera,
dpkg
actúa como un front-end paradpkg-deb
, así que useman dpkg-deb
para ver todas las opciones.También puede usar un navegador de archivos para ver el contenido del paquete.
fuente
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, hagaEl paquete se descargará
/var/cache/apt/archives
pero no se instalará.fuente
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
fuente
lynx -dump -nolist http://packages.debian.org/wheezy/all/transmission-common/filelist | grep ^/
(siempre que hayalynx
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:Uso:
Misma función en múltiples líneas:
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.
fuente
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:
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:
PD: Se puede lograr el mismo resultado con
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:
La página man se muestra correctamente usando la aplicación man.
PD: las tuberías anteriores no funcionan con el comando ar.
fuente
Tratar:
fuente
Parece que no es posible antes de instalarlo primero o extraer la lista del
.deb
archivo.Pruebe el siguiente comando:
Cambiar
language-pack-en
con el nombre de su paquete.Básicamente, lee el
.deb
archivo extraídocurl
y se ejecutadpkg --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:Parámetros de rizo:
-s
- silencio,-L
- seguir enlaces movidos.Si no conoce la URL, busque:
apt --print-uris
p. Ej.fuente