it-swarm.dev

Encontre a que pacote um arquivo pertence no Ubuntu/Debian?

Eu frequentemente me sinto perdendo um programa, página de manual ou outro arquivo quando estou trabalhando no meu sistema Ubuntu 8.04. Existe alguma maneira simples de procurar o pacote que contém um determinado arquivo (se já está instalado ou não)? Talvez alguma opção obscura para o apt ou dpkg?

286
Jay Conrod
apt-file search filename

ou

apt-file search /path/to/file


Para instalar apt-file , use:

Sudo apt-get install apt-file

Você precisará atualizar seu banco de dados antes de poder usá-lo:

Sudo apt-file update
235
John T

(Debian/Ubuntu) Descubra a qual pacote um arquivo pertence :

dpkg -S /usr/bin/ls

'dpkg -S' corresponde apenas à string que você fornece, então apenas usando 'ls' como um argumento combina com qualquer arquivo de qualquer pacote que tenha 'ls' em qualquer lugar no nome do arquivo. Normalmente, é uma boa ideia usar um caminho absoluto. Você pode ver no segundo exemplo que 12 mil arquivos que são conhecidos pelo dpkg correspondem à string nua 'ls'.

387
splattne

packages.debian.org é o que eu sempre uso para realizar essa tarefa. É superior ao apt-file porque também pode encontrar partes de nomes de arquivos. Ele também está ligado à lista de pacotes principais, que listará descrições, bugs, etc. Tudo em um bom site. Não é tão útil na linha de comando, mas ainda é bastante útil.

Para velocidade, eu marquei o URL:

http://packages.debian.org/search?searchon=contents&keywords=%s&mode=filename&suite=unstable&Arch=any

no Firefox, e acrescentou "debfind" como uma palavra-chave (clique em "mais" no gerenciador de favoritos com ele hilighted), para que eu possa digitar "debfind" e vai funcionar. Você pode alterá-lo da unstable para a stable ou testar se preferir, para outras versões da distribuição.

18
jamuraa

Você também pode usar o dlocate. Da man page;

$ dlocate [ PATTERN ]
List all records where either the package name or the filename matches PATTERN.
11
jeremiah

Eu encontrei o Wajig ...

wajig whichpackage /path/to/file 

por exemplo.

wajig whichpackage /etc/apt/sources.list

O Wajig é uma linha de comando ou ferramenta de console útil que envolve toda a bondade do apt-get, dpkg que você nunca quis aprender. .

Para instalar o wajig use:

apt-get install wajig

Esse comando 'whichpackage' depende do apt-file

você ainda precisará atualizar seu banco de dados antes de poder usá-lo: - Eu não sei ainda se a atualização do wajig faz uma atualização do apt-get também atualiza o cache do arquivo, mas eu espero que isso aconteça.

Sudo wajig update

Sudo apt-file update

(e Super Cow, Easter egss ?!)

4
pete_m

Igual à resposta do jamuraa para o Debian, você também pode ir para http://packages.ubuntu.com/ para o Ubuntu. Você terá que rolar um pouco para encontrar o "Pesquisar o conteúdo dos pacotes" searchbox onde você pode inserir o caminho de um arquivo.

2
kiri

Tente pesquisar arquivos usando http://www.kodkast.com/applications/find-which-package-file-belongs-to

Este é um aplicativo para procurar arquivos que estão contidos em diferentes pacotes rpms/linux, e é muito útil quando você não tem sequer o rpm instalado em sua máquina.

0
Ravi Agarwal

O pacote command-not-found fornece dicas sobre possíveis comandos e o nome do pacote debian. Ele funciona digitando o comando no bash Shell e olhando para sua saída.

Por exemplo, se o nome do comando for conhecido:

[email protected]:~ 10:45 $ zsh5
The program 'zsh5' is currently not installed.  To run 'zsh5' please ask
your administrator to install the package 'zsh'
zsh5: command not found

e se o comando não é conhecido, algumas suposições são aplicadas:

[email protected]:~ 09:46 $ zsh
No command 'zsh' found, did you mean:
 Command 'lsh' from package 'lsh-client' (main)
 Command 'osh' from package 'omake' (main)
 Command 'ysh' from package 'libyaml-Shell-Perl' (main)
 Command 'ssh' from package 'openssh-client' (main)
 Command 'vsh' from package 'crystalspace' (main)
 Command 'dsh' from package 'dsh' (main)
 Command 'ash' from package 'ash' (main)
 Command 'msh' from package 'nmh' (main)
 Command 'zssh' from package 'zssh' (main)
 Command 'qsh' from package 'gridengine-client' (main)
 Command 'sh' from package 'dash' (main)
 Command 'bsh' from package 'bsh' (main)
zsh: command not found
0
erwing