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-filepacote 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.
O arquivo apt também precisa ser atualizado ( sudo apt-file update) e lista apenas o conteúdo dos pacotes nos seus repositórios Apt já configurados.
quack quixote
1
@quackquixote: No Ubuntu 12.04 é automático
confiq
1
dpkg -clegais!
precisa
2
A resposta do arquivo Apt pressupõe que seu pacote é proveniente de um repositório configurado em vez de um .debarquivo que você baixou separadamente. A questão original é ambígua.
Zoredache
5
@confiq, não pelos meus testes. Estou executando o 12.04.4 e ele ainda diz "E: O cache está vazio. Você precisa executar a 'atualização do arquivo apt' primeiro".
Matthew Flaschen
58
Use em --contentsvez de -L:
dpkg --contents PACKAGENAME
Quando usado dessa maneira, dpkgatua como um front-end para dpkg-deb, portanto, use man dpkg-debpara ver todas as opções.
Você também pode usar um navegador de arquivamento para visualizar o conteúdo do pacote.
Isso não funciona, a menos que eu o instalei primeiro e depois o desinstale.
Xiè Jìléi
3
deve funcionar bem se você der um arquivo .deb como argumento (em vez de PACKAGENAME, dê PACKAGE-DEB-FILE).
quack quixote
3
Esta resposta está errada. Você precisa instalar o pacote primeiro. Se você não o instalou, não possui um arquivo .deb.
Neil
Este comando funciona para mim. Por exemplo, baixei o google-chrome-stable_current_amd64.deb do Google. Em seguida, emitiu o comando: dpkg --contents google-chrome-stable_current_amd64.debe 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.)
quux00
10
@ Neil, a resposta não está errada. Só porque você tem um arquivo deb, não significa que ele está instalado. O apt-file precisa de todo o pacote essencial para compilação. OO
d -_- b
21
dpkg --contentspermitirá 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/archivesmas não instalado.
Posso apenas listar o conteúdo sem fazer o download? Se eu estiver com uma conexão muito lenta e se o pacote for muito grande para baixar. Se o arquivo .deb tiver um cabeçalho para a lista de conteúdo, acho que o download do pacote inteiro talvez não seja necessário. Isso é possível?
Xiè Jìléi
13
A melhor maneira seria navegar diretamente no repositório de pacotes:
E para evitar sair do terminal, você pode usar, por exemplo lynx -dump -nolist http://packages.debian.org/wheezy/all/transmission-common/filelist | grep ^/(desde que você tenha lynxinstalado).
Ruslan
8
Tomei @ ideia http do baldoz e generalizou-lo para o Ubuntu e Debian, acrescentou um pouco sede 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'; }
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 retorna "Ubuntu" ou "Debian" substituindo-o pelo URL base https://packages.ubuntu.comouhttps://packages.debian.org
lsb_Release -sc retorna o nome do código (por exemplo, "confiável", "sid" etc.) que o utiliza para criar a URL completa: https://packages.ubuntu.com/trusty/all/curl/filelist
Busque esse URL com curl e passe o html por três comandos sed. Primeiro captura apenas a lista de arquivos (o que há entre <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.
@ Anwar, eu tinha usado inicialmente o Ruby porque era preguiçoso e as expressões regulares multilinhas sugam sed / awk / grep. Mas eu o reescrevi para usar dois comandos sed, não é necessário Ruby.
notpeter
Agradável! Esta é a resposta que eu estava procurando
Anwar
4
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.
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
Respostas:
dpkg -c
(ou--contents
) lista o conteúdo de um arquivo de pacote .deb (é um front-end paradpkg-deb
.)Para trabalhar diretamente com nomes de pacotes, em vez de arquivos de pacote, você pode usar
apt-file
. (Pode ser necessário instalar oapt-file
pacote primeiro.)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.
fonte
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
:Quando usado dessa maneira,
dpkg
atua como um front-end paradpkg-deb
, portanto, useman dpkg-deb
para ver todas as opções.Você também pode usar um navegador de arquivamento para visualizar o conteúdo do pacote.
fonte
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çaO pacote será baixado para,
/var/cache/apt/archives
mas não instalado.fonte
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
fonte
lynx -dump -nolist http://packages.debian.org/wheezy/all/transmission-common/filelist | grep ^/
(desde que você tenhalynx
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:Uso:
A mesma função em várias linhas:
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.
fonte
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:
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:
PS: O mesmo resultado pode ser alcançado com
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:
A página man é exibida corretamente usando o aplicativo man.
PS: Os tubos acima não funcionam com o comando ar.
fonte
Experimentar:
fonte
Parece que não é possível antes de instalá-lo primeiro ou extrair a lista do
.deb
arquivo.Tente o seguinte comando:
Mude
language-pack-en
com o nome do seu pacote.Ele basicamente lê o
.deb
arquivo extraído viacurl
e executadodpkg --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:Params de ondulação:
-s
- silencioso,-L
- siga os links movidos.Se você não conhece o URL, busque por:, por
apt --print-uris
exemplofonte