Como descobrir a qual pacote Debian (não instalado) um arquivo pertence?

41

Nos sistemas Debian (e derivados):

$ dpkg --search /bin/ls
coreutils: /bin/ls

Ou seja, o arquivo /bin/lspertence ao pacote Debian nomeado coreutils.

Mas isso só funciona se o pacote estiver instalado. E se não for?

tshepang
fonte

Respostas:

58

arquivo apt

apt-filefornece o recurso de procurar um pacote que forneça um binário (como Debian ou Ubuntu ); ele não é instalado por padrão, mas nos repositórios.

apt-file search <path-to-file>

Convém atualizar uma vez antes de pesquisar ...

apt-file update 

Por exemplo, vamos procurar o binário não instalado mysqldump:

$ apt-file search /usr/bin/mysqldump

mysql-client-5.1: /usr/bin/mysqldump
mysql-client-5.1: /usr/bin/mysqldumpslow
mysql-cluster-client-5.1: /usr/bin/mysqldump
mysql-cluster-client-5.1: /usr/bin/mysqldumpslow

Também é possível listar o conteúdo de um pacote (não instalado):

$ apt-file list mysql-client-5.1

mysql-client-5.1: /usr/bin/innochecksum
mysql-client-5.1: /usr/bin/innotop
mysql-client-5.1: /usr/bin/myisam_ftdump
mysql-client-5.1: /usr/bin/mysql_client_test
...

yum

yumaceita o comando whatprovides(ou provides) para procurar binários instalados ou não instalados:

yum whatprovides <path-to-file>

Novamente, o não instalado mysqldump:

$ yum whatprovides /usr/bin/mysqldump

mysql-5.1.51-2.fc14.i686 : MySQL client programs and shared libraries
Repo        : fedora
Matched from: 
Filename    : /usr/bin/mysqldump

mysql-5.1.51-1.fc14.i686 : MySQL client programs and shared libraries
Repo        : fedora
Matched from: 
Filename    : /usr/bin/mysqldump

zypper

zypperO searchcomando de pode verificar as listas de arquivos quando usado com a -fopção

zypper se -f /bin/mksh
Loading repository data...
Reading installed packages...

S | Name | Summary           | Type   
--+------+-------------------+--------
  | mksh | MirBSD Korn Shell | package

O Webpin fornece uma solução baseada na Web , existe até um script para a linha de comando.

pkgfile

Disponível como pkgtoolspara pacmansistemas baseados. Fornece um recurso de pesquisa semelhante aos outros acima:

$ pkgfile -si /usr/bin/mysqldump

Name      : mysql-clients
Version   : 5.1.54-1
Url       : http://www.mysql.com/
License   : GPL
Depends   : libmysqlclient
...
abanar
fonte
apt-file search protoc, por exemplo, fornece mais de seis mil resultados. No entanto, os resultados finais no nome do arquivo, assim com grep você pode realmente encontrar o nome do arquivo que você está procurando: apt-file search protoc | grep 'protoc$'. Funciona porque filtra qualquer coisa que termine em "protoc". Claro que você deve substituir "protoc" pelo que estiver procurando.
Luc
5

A ferramenta padrão para isso é o arquivo apt . Execute apt-file updatepara baixar o arquivo de índice. Aqui está a saída:

Downloading complete file ftp://ftp.is.co.za/debian/dists/squeeze/Contents-i386.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 16.6M  100 16.6M    0     0  33191      0  0:08:47  0:08:47 --:--:-- 38951

Depois disso, corra apt-file search search_term.

tshepang
fonte