Pergunta bastante simples: existe algum comando shell (ou método GUI) que eu possa usar, dado o caminho para um arquivo no meu sistema, me diz qual pacote o colocou lá? Supondo que o arquivo realmente veio de um pacote, é isso.
Pergunta bônus: e se for um arquivo que não está instalado no meu sistema? Existe, digamos, um site que permita pesquisar um arquivo e ver quais pacotes, se houver, o fornecem?
package-management
David Z
fonte
fonte
Provides:
mecanismo. Mais detalhadamente, um comando comomailx
ousendmail
não é incluído como binário em nenhum pacote; em vez disso, vários pacotes instalam seus próprios binários e, em seguida, disponibilizam alguns deles sob um nome "canônico" via/etc/alternatives
. Veja também askubuntu.com/questions/366135/…Respostas:
Você pode usar o
dpkg
comando para descobrir qual pacote instalado possui um arquivo:De
man dpkg
:Exemplo:
Você pode pesquisar com um caminho completo ou apenas com o nome do arquivo.
Se você deseja procurar arquivos ainda não instalados no seu computador, use a Pesquisa de Pacotes Ubuntu
fonte
which
para encontrar o programa:dpkg -S `which firefox`
dlocate
pode não fazer o trabalho, se o banco de dados do dlocate estiver desatualizado. Você precisa ligarsudo update-dlocatedb
para atualizá-lo.dpkg
o caminho exato não retornar nada (por exemplodpkg /usr/bin/java
), tente apenas o nome do executável (por exemplodpkg java
).realpath
para resolver links simbólicos, como este:dpkg -S $(realpath $(which <command>))
.O
apt-file
comando pode fazer isso por você na linha de comando. Eu o uso frequentemente ao criar pacotes a partir do código-fonte. Para arquivos fornecidos por pacotes que já estão instalados no seu sistema,apt-cache
é outra opção.Para instalar
apt-file
, faça:Então, você precisa atualizar seu banco de dados:
E, finalmente, pesquise o arquivo:
No entanto, uma maneira muito mais amigável é usar o site de pesquisa de pacotes do Ubuntu . Eles têm a opção de "pesquisar o conteúdo dos pacotes" por um nome de arquivo específico.
fonte
apt-file
geralmente encontra falsos positivos, ou seja, pacotes que não estão instalados. É claro que essa resposta é ótima para a "pergunta bônus".apt-file search <>
é o mais próximo análogodnf/yum whatprovides <>
.apt-file find
comoapt-find
há muito tempo e é realmente útil! Btw, as versões mais recentes requerem raiz paraapt-file update
.Também existe o arquivo apt para procurar arquivos em pacotes que não estão instalados. Por exemplo:
fonte
Você pode pesquisar o conteúdo dos pacotes incluídos nas várias versões do Ubuntu no site de pacotes do Ubuntu . Procure sob o título " Pesquisar o conteúdo dos pacotes ".
Por exemplo, aqui estão os resultados da pesquisa para libnss3.so em lucid (10.04):
http://packages.ubuntu.com/search?searchon=contents&keywords=libnss3.so&mode=exactfilename&suite=lucid&arch=any
fonte
Você quer dizer qual pacote e não qual aplicativo. A aplicação é o seu gerenciador de pacotes, por exemplo
Software Center
.Usando
dpkg
:Exemplo
Usando
apt-file
:ou também possível:
Exemplo
Ou online aqui , na seção
Search the contents of packages
.Exemplo
fonte
Esta é uma extensão da excelente resposta de Alexx Roche . Tentei fazer uma edição dessa resposta, mas ela foi rejeitada (embora não por Alexx)
Eu estava tentando rastrear o que estava instalado
which
no meu sistema. Depois de um pouco de trabalho eu criei/usr/local/bin/apt-whatprovides
Embora, para a maioria das coisas instaladas, você possa usar:
Para as coisas que não estão instaladas, você pode usar:
O
apt-whatprovides
script funciona para arquivos que estão e não estão no seu sistema. Por exemplo, meu sistema não possuía,dig
mas tinhaping
isso que resultou:Observe que esse
Searching for
é um caminho completo paraping
(instalado) e apenas o nome binário dedig
não instalado. Isso me ajudou a descobrir que eu precisava instalardnsutils
sem precisar pesquisar https://packages.ubuntu.com/#search_contentsfonte
Eu estava tentando rastrear o que estava instalado
which
no meu sistema. Depois de um pouco de trabalho, criei o apt-whatprovidesEmbora para a maioria das COISAS você possa usar
fonte
Uma razão pela qual você pode precisar fazer isso é que, se estiver compilando software com um pacote ubuntu, você poderá executar
apt-get build-dep $PACKAGENAME
. Isso instalará todos os pacotes que você precisa compilar$PACKAGENAME
.fonte