2009-07-22 19:06:32 +0000 2009-07-22 19:06:32 +0000
310
310

Encontrar a que pacote pertence um ficheiro em Ubuntu/Debian?

Frequentemente encontro-me sem um programa, página de homem, ou outro ficheiro quando trabalho no meu sistema Ubuntu 8.04. Existe alguma forma simples de procurar que pacote contém um determinado ficheiro (quer esteja já instalado ou não)? Talvez alguma opção obscura para apt ou dpkg?

Respostas (8)

416
416
416
2009-07-22 19:13:44 +0000

(Debian/Ubuntu) Descubra a que pacote pertence um ficheiro :

dpkg -S /usr/bin/ls

‘dpkg -S’ corresponde apenas à cadeia de caracteres que lhe fornece, por isso só usar ‘ls’ como argumento corresponde a qualquer ficheiro de qualquer pacote que tenha ‘ls’ em qualquer parte do nome do ficheiro. Portanto, normalmente é uma boa ideia usar um caminho absoluto. Pode ver no segundo exemplo que 12 mil ficheiros que são conhecidos por dpkg coincidem com a cadeia de caracteres ‘ls’.

255
255
255
2009-07-22 19:08:44 +0000
apt-file search filename

ou

apt-file search /path/to/file

Para instalar apt-file , utilizar:

sudo apt-get install apt-file

Terá de actualizar a sua base de dados antes de a poder utilizar:

sudo apt-file update
20
20
20
2009-07-22 20:07:17 +0000

packages.debian.org é o que eu sempre utilizo para realizar esta tarefa. É superior ao ficheiro apt-file porque também pode encontrar partes de nomes de ficheiros. Está também ligado à lista principal de pacotes que irá listar descrições, bugs, etc. Em suma, um bom website. Não tão útil a partir da linha de comando, mas ainda assim bastante útil.

Para velocidade, marquei a url nos favoritos:

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

no Firefox, e adicionei “debfind” como palavra-chave (clique em “mais” no gestor de favoritos com a palavra “hilight”), por isso posso apenas digitar “debfind” e funcionará. Pode alterar a “suite” de instável para estável ou teste, se desejar, para outras versões da distribuição.

11
11
11
2011-08-08 19:30:27 +0000

Também se pode usar dlocate. Da página de homem;

$ dlocate [PATTERN]
List all records where either the package name or the filename matches PATTERN.
4
4
4
2013-01-14 02:40:06 +0000

Encontrei Wajig…

wajig whichpackage /path/to/file
wajig whichpackage /etc/apt/sources.list

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

Para instalar o uso do wajig:

apt-get install wajig

Esse comando ‘whichpackage’ depende do ficheiro apt-file

ainda precisará de actualizar a sua base de dados antes de o poder utilizar: - Ainda não sei se o wajig update whixh que faz uma actualização do apt-get também actualiza a cache de ficheiros, mas espero que o possa fazer.

sudo wajig update

sudo apt-file update

( e Super Cow, Easter egss ? ! )

2
2
2
2013-10-28 10:40:51 +0000

Similiar à resposta do Jamuraa para Debian, também pode ir a http://packages.ubuntu.com/ para Ubuntu. Terá de percorrer um pouco para encontrar a “Pesquisar o conteúdo dos pacotes” caixa de pesquisa onde pode introduzir o caminho de um ficheiro.

0
0
0
2014-11-24 09:59:47 +0000

O pacote command-not-found dá-lhe dicas sobre potenciais comandos e o nome do pacote debian. Funciona digitando o comando na concha bash e olhando para a sua saída.

Por exemplo, se o nome do comando for conhecido:

zer@ivy:~ 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 for conhecido, são aplicados alguns palpites:

zer@ivy:~ 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
0
0
2012-12-20 00:33:23 +0000

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

Esta é uma aplicação para procurar ficheiros que estão contidos em diferentes pacotes rpms/linux, e é muito útil quando não tem sequer o rpm instalado na sua máquina.