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

38

Nos sistemas Debian (e derivados):

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

Ou seja, o arquivo /bin/ls pertence ao pacote Debian chamado coreutils .

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

    
por Tshepang 23.01.2011 / 11:34

3 respostas

55

apt-file

apt-file fornece o recurso de procurar por 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>

Você pode querer 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

yum aceita o comando whatprovides (ou provides ) para procurar por 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

O comando zypper 'co_de%' pode verificar listas de arquivos quando usado com a opção search .

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

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

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

pkgfile

Disponível como -f para sistemas baseados em pkgtools . 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
...
    
por 23.01.2011 / 12:20
5

A ferramenta padrão para isso é apt-file . Execute apt-file update para 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, execute apt-file search search_term .

    
por 23.01.2011 / 12:20
3

Se você não tem acesso à máquina ou não pode usar os comandos fornecidos nas respostas anteriores, você também pode descobrir isso usando o Mecanismo de pesquisa baseado na web do pacote Debian (o segundo formulário," Pesquisar o conteúdo dos pacotes ").

    
por 25.05.2011 / 13:56