Como descubro qual pacote possui um arquivo?


Respostas:


44

Existem vários utilitários no Debian que executam esta tarefa; verifique esta página para obter uma descrição. Vou mencionar dois deles, apt-filee dlocate.

apt-filepesquisa seu cache interno, permitindo que você não instale todos os pacotes que deseja pesquisar. Abaixo você encontrará um guia mais detalhado.

dlocateé uma alternativa rápida a dpkg -L(o comando que lista o conteúdo do pacote) e, portanto, pesquisa apenas pacotes instalados. A pesquisa é realizada por dlocate -S file.name.

Além disso, você pode pesquisar pacotes online usando o servidor packages.debian.org (a seção Pesquisar o conteúdo dos pacotes ).


Instalando e usando apt-file

É uma boa ideia atualizar primeiro:

sudo apt-get update

Veja o que apt-fileé para:

apt-cache show apt-file

Instale-o:

sudo apt-get install apt-file

Leia os dados dos repositórios (isso funciona também sem, sudomas cria o cache do usuário; com sudoo cache em todo o sistema):

sudo apt-file update

Realize a pesquisa. Neste exemplo, queremos saber em qual pacote xrandrexecutável é:

apt-file search xrandr

Ele lista muitos pacotes com unxrandr, lxrandr.moou source_lxrandr.py. Não é muito útil no nosso caso. Pesquisa mais inteligente:

apt-file search -x /xrandr$

( $indica o fim da linha). Exemplo de saída:

bash-completion: /usr/share/bash-completion/completions/xrandr
x11-xserver-utils: /usr/bin/xrandr

O primeiro resultado não parece executável, o segundo parece. Podemos investigar mais. Corre:

apt-cache show x11-xserver-utils

Bingo! Este é o pacote.


O primeiro link nesta resposta ( debianhelp.co.uk/findfile.htm ) parece estar desativado agora.
Rogpeppe

123
user@host:~$ dpkg-query -S /bin/bash 
bash: /bin/bash

Onde bash é o nome do pacote.


4
Esta resposta é muito melhor do que a aceita!
Bex

Corrigir. É lamentável que a "resposta aceita" receba uma marca de seleção verde, que também indica "resposta correta". Nesse caso, a resposta aceita falha dpkg-query -SE o envia pelo caminho errado da instalação de pacotes opcionais.
Scott Prive

42

Outra alternativa:

$ dpkg -S /bin/bash
bash: /bin/bash

No meu Ubuntu, pelo menos, ambos parecem estar no dpkgpacote, então não há vantagem real para nenhum específico ...


14

Os arquivos gerados pela instalação não serão encontrados por dpkg -S, como mencionado em: https://askubuntu.com/a/667227/52975

Por exemplo, /bin/ncaparece quando você instala o pacote netcat-openbsd.

Mas depois:

dpkg -S /bin/nc

nós recebemos dpkg-query: no path found matching pattern /bin/nc.

Isso acontece porque /bin/ncé gerado pela update-alternativeschamada no script postinst que é executado após a instalação.

Funciona assim porque outra versão /bin/ncé fornecida pelo netcat-traditionalpacote.

Eu não acho que exista uma maneira geral de encontrar esses arquivos gerados. No caso específico de links simbólicos alternativos, podemos apenas seguir o link com readlink -f:

dpkg -S "$(readlink -f /bin/nc)"

2

Não conhecendo o Debian, fiquei perplexo quando tentei o seguinte:

kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/vncviewer
dpkg-query: no path found matching pattern /usr/bin/vncviewer
kearnsp@xubuntuvb:~$ 

Um pouco de investigação e encontrei o pacote:

kearnsp@xubuntuvb:~$ ls -l /usr/bin/vncviewer
lrwxrwxrwx 1 root root 27 May 28 15:49 /usr/bin/vncviewer -> /etc/alternatives/vncviewer
kearnsp@xubuntuvb:~$ ls -l /etc/alternatives/vncviewer
lrwxrwxrwx 1 root root 20 May 28 15:49 /etc/alternatives/vncviewer -> /usr/bin/xvnc4viewer
kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/xvnc4viewer
xvnc4viewer: /usr/bin/xvnc4viewer
kearnsp@xubuntuvb:~$ 
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.