Obtém o nome do pacote que contém um dado binário

5

Dado o nome de um binário (ou qualquer outro programa). Como descobrir qual pacote fornece esse binário?

Observação: Assumindo que um usa apt / dpkg para o gerenciamento de pacotes.

Editar

Além da resposta correta abaixo, eu gostaria de acrescentar mais algumas informações: Na pergunta acima eu estava assumindo que o pacote correspondente estava instalado . Se isso não for não , existe um pacote chamado apt-file que poderia fazer o trabalho de qualquer maneira.

A pesquisa da ferramenta mysqldump pode ser feita com

$ apt-file --regexp search .*mysqldump$

Como resultado:

mariadb-client-10.0: /usr/bin/mysqldump
mysql-client-5.5: /usr/bin/mysqldump

Esta solução foi encontrada aqui , mas achei que poderia ser útil mencioná-la aqui.

    
por Matthias 19.08.2015 / 13:45

2 respostas

6

Você quer dpkg . Especificamente, a opção -S encontrará qual pacote possui um arquivo.

Um exemplo:

$ dpkg -S /usr/bin/whereis
util-linux: /usr/bin/whereis

O exemplo mostra que util-linux é o pacote que contém /usr/bin/whereis .

    
por 19.08.2015 / 13:52
2
dpkg --search /usr/bin/mysqldump
dpkg -S /usr/bin/mysqldump

O argumento de dpkg --search é um padrão de caractere curinga, para que você possa fazer coisas como dpkg -S bin/*dump .

Como alternativa, você pode pesquisar o banco de dados manualmente - são apenas arquivos de texto.

grep mysqldump /var/lib/dpkg/info/*.list

Em um sistema com vários pacotes instalados, dpkg -S pode ser lento porque ele precisa ler muitos arquivos pequenos em /var/lib/dpkg/info . Você pode instalar o dlocate que indexa arquivos instalados via pacotes deb da mesma forma que locate indexa todos os arquivos: a informação é um pouco obsoleto (por padrão, o banco de dados é atualizado todas as noites), mas a operação de consulta é mais rápida.

    
por 20.08.2015 / 01:00