Pergunta bastante simples: existe algum comando shell (ou método GUI) que eu possa usar que, dado o caminho para um arquivo no meu sistema, me diga qual pacote o colocou lá? Assumindo que o arquivo veio de fato de um pacote, isto é.
Pergunta bônus: e se for um arquivo que não está instalado no meu sistema? Existe, digamos, um site que me permita procurar um arquivo e ver quais pacotes, se houver, o fornecem?
Você pode usar
dpkg
o 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 pesquisar arquivos ainda não instalados em seu computador, você pode usar a Pesquisa de Pacotes do Ubuntu ou
apt-file
conforme descrito em uma resposta diferente .O
apt-file
comando pode fazer isso para você na linha de comando. Eu o uso frequentemente ao construir pacotes a partir da fonte. Para arquivos fornecidos por pacotes que já estão instalados em 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 Ubuntu Packages Search . Eles têm a opção de "pesquisar o conteúdo dos pacotes" por um nome de arquivo específico.
Há também o apt-file para procurar arquivos em pacotes que não estão instalados. Por exemplo:
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 focal (20.04):
http://packages.ubuntu.com/search?searchon=contents&keywords=libnss3.so&mode=exactfilename&suite=focal&arch=any
Você quer dizer, qual pacote e não qual aplicativo. O aplicativo é 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
Esta é uma extensão da excelente resposta de Alexx Roche . Tentei editar essa resposta, mas foi rejeitada (embora não por Alexx)
Eu estava tentando rastrear o que instalou
which
no meu sistema. Depois de um pouco de trabalho eu criei/usr/local/bin/apt-whatprovides
Embora para a maioria das coisas que estão instaladas, você pode simplesmente usar:
Para 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 em seu sistema. Por exemplo, meu sistema não tinha,dig
mas tinhaping
isso, o que resultou:Observe que
Searching for
é um caminho completo paraping
(instalado) e apenas o nome binário paradig
não instalado. Isso me ajudou a descobrir que eu precisava instalardnsutils
sem precisar pesquisar https://packages.ubuntu.com/#search_contentsEu estava tentando rastrear o que instalou
which
no meu sistema. Depois de um pouco de trabalho eu criei o apt-whatprovidesEmbora para a maioria das COISAS você pode simplesmente usar
Você pode usar
apt
para fazer isso.A saída é igual a:
Uma razão pela qual você pode ter que fazer isso é se você estiver compilando um software que já existe um pacote ubuntu, você pode executar
apt-get build-dep $PACKAGENAME
. Isso instalará todos os pacotes que você precisa compilar$PACKAGENAME
.Por quê :
Distro diferente tem seu próprio jeito, muitos comandos para lembrar o(╥﹏╥)o
Como :
Uma solução universal:
pacapt -Qo file_path
Resultado :
No Ubuntu:
No centos:
Até pode encontrar o próprio caminho:
O que é pacap :
Instalar :
Basta baixar o script portátil :
wget -O $HOME/bin/pacapt https://github.com/icy/pacapt/raw/ng/pacapt