Respostas:
dpkg -c
(ou --contents
) lista o conteúdo de um arquivo de pacote .deb (é um front-end para dpkg-deb
.)
dpkg -c package_file.deb
Para trabalhar diretamente com nomes de pacotes, em vez de arquivos de pacote, você pode usar apt-file
. (Pode ser necessário instalar o apt-file
pacote primeiro.)
sudo apt-file update
apt-file list package_name
Conforme declarado no primeiro comentário, o apt-file lista o conteúdo dos pacotes nos repositórios do Apt já configurados. É irrelevante se algum pacote específico está ou não instalado.
sudo apt-file update
) e lista apenas o conteúdo dos pacotes nos seus repositórios Apt já configurados.
dpkg -c
legais!
.deb
arquivo que você baixou separadamente. A questão original é ambígua.
Use em --contents
vez de -L
:
dpkg --contents PACKAGENAME
Quando usado dessa maneira, dpkg
atua como um front-end para dpkg-deb
, portanto, use man dpkg-deb
para ver todas as opções.
Você também pode usar um navegador de arquivamento para visualizar o conteúdo do pacote.
dpkg --contents google-chrome-stable_current_amd64.deb
e listou todos os arquivos que ele instalará (principalmente para /opt/google/chrome
), nenhum dos quais está atualmente instalado no meu sistema enquanto digito isso. (Eu estou correndo Xubuntu 11.10 se o que importa.)
dpkg --contents
permitirá que você veja o pacote desinstalado. Se o .deb ainda não estiver em seu sistema, faça
apt-get --download-only install pkgname
O pacote será baixado para, /var/cache/apt/archives
mas não instalado.
A melhor maneira seria navegar diretamente no repositório de pacotes:
http://packages.debian.org/[distro name]/all/[package name]/filelist
Exemplo:
http://packages.debian.org/wheezy/all/transmission-common/filelist
lynx -dump -nolist http://packages.debian.org/wheezy/all/transmission-common/filelist | grep ^/
(desde que você tenha lynx
instalado).
Tomei @ ideia http do baldoz e generalizou-lo para o Ubuntu e Debian, acrescentou um pouco sed
e envolveu-o em uma função bash-liner:
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
A mesma função em várias linhas:
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
ouhttps://packages.debian.org
https://packages.ubuntu.com/trusty/all/curl/filelist
<pre>
e </pre>
tags); o segundo remove quaisquer tags html; terceiro remove todas as linhas em branco.Nota: Ele não pesquisa PPAs, repositórios alternativos de fontes apt e consulta apenas pacotes oficiais disponíveis para o lançamento do debian / ubuntu que você está executando.
Para todas as pessoas que ainda podem pesquisar no Google esta questão em janeiro de 2017, você pode ter algumas coisas interessantes com versões recentes do apt e dpkg no Debian 8.5 sem baixar nada.
Listar o conteúdo do arquivo Deb sem download:
Primeiro localize o URL completo do arquivo 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 o URL do pacote deb, mas o deb não é baixado.
Em seguida, exiba o conteúdo do pacote deb sem fazer o download:
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: O mesmo resultado pode ser alcançado com
root@debian:dpkg -c <(curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb")
Extraia um arquivo do pacote deb acima, sem download.
Por exemplo, queremos ler a página de manual do pacote yade sem instalar este pacote e nem mesmo fazer o download do pacote deb.
O nome do arquivo da página de manual no pacote deb, conforme recomendado por, dpkg -c
é./usr/share/man/man1/yade.1.gz
Para ler a página do manual em tempo real:
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
A página man é exibida corretamente usando o aplicativo man.
PS: Os tubos acima não funcionam com o 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 não é possível antes de instalá-lo primeiro ou extrair a lista do .deb
arquivo.
Tente o seguinte comando:
dpkg --contents <(curl -s $(apt-get install --yes --no-download --reinstall --print-uris language-pack-en | tail -n1 | grep -o "http[^']\+"))
Mude language-pack-en
com o nome do seu pacote.
Ele basicamente lê o .deb
arquivo extraído via curl
e executado dpkg --contents FILE
nele.
Você também pode verificar o conteúdo sem baixar o arquivo do pacote.
Portanto, se você souber a URL do .deb
arquivo, o seguinte comando shell listará todos os arquivos do pacote:
dpkg -c <(curl -sL "http://httpredir.debian.org/debian/pool/main/a/avis/avis_1.2.2-4_all.deb")
Params de ondulação: -s
- silencioso, -L
- siga os links movidos.
Se você não conhece o URL, busque por:, por apt --print-uris
exemplo
apt --print-uris install avis | grep avis