AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 481
Accepted
David Z
David Z
Asked: 2010-07-31 00:10:55 +0800 CST2010-07-31 00:10:55 +0800 CST 2010-07-31 00:10:55 +0800 CST

Como encontro o pacote que fornece um arquivo?

  • 772

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?

package-management
  • 10 10 respostas
  • 512755 Views

10 respostas

  • Voted
  1. Best Answer
    Ressu
    2010-07-31T00:42:03+08:002010-07-31T00:42:03+08:00

    Você pode usar dpkgo comando para descobrir qual pacote instalado possui um arquivo:

    De man dpkg:

    -S, --search nome do arquivo-padrão de pesquisa...
                      Procure um nome de arquivo de pacotes instalados.
    

    Exemplo:

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

    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-fileconforme descrito em uma resposta diferente .

    • 626
  2. jbowtie
    2010-08-11T18:43:23+08:002010-08-11T18:43:23+08:00

    O apt-filecomando 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:

    sudo apt-get install apt-file
    

    Então, você precisa atualizar seu banco de dados:

    sudo apt-file update
    

    E, finalmente, pesquise o arquivo:

    $ apt-file find kwallet.h
    kdelibs5-dev: /usr/include/kwallet.h
    libkf5wallet-dev: /usr/include/KF5/KWallet/kwallet.h
    

    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.

    • 372
  3. ptman
    2010-07-31T00:49:52+08:002010-07-31T00:49:52+08:00

    Há também o apt-file para procurar arquivos em pacotes que não estão instalados. Por exemplo:

    apt-file list packagename
    
    • 52
  4. moberley
    2010-08-11T18:42:10+08:002010-08-11T18:42:10+08:00

    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

    • 20
  5. A.B.
    2015-11-30T07:57:08+08:002015-11-30T07:57:08+08:00

    Você quer dizer, qual pacote e não qual aplicativo. O aplicativo é seu gerenciador de pacotes, por exemplo, Software Center.

    Usando dpkg:

    dpkg -S /usr/lib/tracker/tracker-store
    dpkg -S tracker-extract
    dpkg -S tracker-miner-fs
    

    Exemplo

    % dpkg -S /usr/lib/tracker/tracker-store
    tracker: /usr/lib/tracker/tracker-store
    

    Usando apt-file:

    apt-file search /usr/lib/tracker/tracker-store
    

    ou também possível:

    apt-file search --regex /tracker-extract$
    apt-file search --regex /tracker-miner-fs$
    

    Exemplo

    % apt-file search /usr/lib/tracker/tracker-store
    tracker: /usr/lib/tracker/tracker-store
    

    Ou online aqui , na seção Search the contents of packages.

    insira a descrição da imagem aqui

    Exemplo

    insira a descrição da imagem aqui

    • 17
  6. Bruno Bronosky
    2018-07-18T21:45:47+08:002018-07-18T21:45:47+08:00

    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 whichno meu sistema. Depois de um pouco de trabalho eu criei/usr/local/bin/apt-whatprovides

    #!/bin/sh
    #apt-whatprovides ver. 201801010101 Copyright alexx, MIT Licence
    #rdfa:deps="[realpath,apt-file,grep,which,sh,echo]"
    
    BINARY="$(realpath $(which $@) 2>/dev/null)"
    [ -z "$BINARY" ] && BINARY="$@"
    echo Searching for $BINARY
    PACKAGE="$(apt-file search $BINARY|grep -E ":.*[^-.a-zA-Z0-9]${BINARY}$")"
    echo "${PACKAGE}"
    

    Embora para a maioria das coisas que estão instaladas, você pode simplesmente usar:

    apt-file search $(realpath $(which THING)) | grep 'THING$'
    

    Para coisas que não estão instaladas, você pode usar:

    apt-file search THING | grep '/THING$'
    

    O apt-whatprovidesscript funciona para arquivos que estão e não estão em seu sistema. Por exemplo, meu sistema não tinha, digmas tinha pingisso, o que resultou:

    pi@raspberrypi:~ $ apt-whatprovides ping
    Searching for /bin/ping
    inetutils-ping: /bin/ping
    iputils-ping: /bin/ping
    
    pi@raspberrypi:~ $ apt-whatprovides dig
    Searching for dig
    dnsutils: /usr/bin/dig
    epic4: /usr/share/epic4/script/dig
    epic4-help: /usr/share/epic4/help/8_Scripts/dig
    knot-dnsutils: /usr/bin/dig
    

    Observe que Searching foré um caminho completo para ping(instalado) e apenas o nome binário para dignão instalado. Isso me ajudou a descobrir que eu precisava instalar dnsutilssem precisar pesquisar https://packages.ubuntu.com/#search_contents

    • 7
  7. Alexx Roche
    2018-03-18T07:25:54+08:002018-03-18T07:25:54+08:00

    Eu estava tentando rastrear o que instalou whichno meu sistema. Depois de um pouco de trabalho eu criei o apt-whatprovides

    #!/bin/sh
    #apt-whatprovides ver. 201801010101 Copyright alexx, MIT Licence
    #rdfa:deps="[realpath,apt-file,grep,which,sh,echo]"
    
    BINARY=$(realpath $(which $@))
    PACKAGE=$(apt-file search $BINARY|grep -E ":\s*${BINARY}$")
    echo ${PACKAGE%:*}
    

    Embora para a maioria das COISAS você pode simplesmente usar

    apt-file search $(realpath $(which THING))|grep 'THING$'
    
    • 4
  8. Ahmad Ismail
    2021-09-23T09:24:16+08:002021-09-23T09:24:16+08:00

    Você pode usar aptpara fazer isso.

    $ apt contains /bin/ls
    coreutils: /bin/ls
    

    A saída é igual a:

    $ dpkg -S /bin/ls
    coreutils: /bin/ls
    
    • 3
  9. Amandasaurus
    2010-08-12T11:31:41+08:002010-08-12T11:31:41+08:00

    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.

    • 2
  10. Qinsi
    2020-10-14T19:29:36+08:002020-10-14T19:29:36+08:00

    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:

    $ pacapt -Qo /usr/bin/iostat
    sysstat: /usr/bin/iostat
    

    No centos:

    $ pacapt -Qo /usr/bin/iostat
    sysstat-10.1.5-19.el7.x86_64
    

    Até pode encontrar o próprio caminho:

    $ pacapt -Qo iostat
    sysstat: /usr/share/man/man1/iostat.1.gz
    sysstat: /usr/bin/cifsiostat
    sysstat: /usr/bin/iostat
    sysstat: /usr/share/man/man1/cifsiostat.1.gz
    

    O que é pacap :

    pacapt é um wrapper para muitos gerenciadores de pacotes

    Instalar :

    Basta baixar o script portátil :

    wget -O $HOME/bin/pacapt https://github.com/icy/pacapt/raw/ng/pacapt

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como adicionar um diretório ao PATH?

    • 17 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Marko Smith

    Como faço para obter a temperatura da CPU?

    • 21 respostas
  • Marko Smith

    Como posso adicionar um usuário como um novo sudoer usando a linha de comando?

    • 7 respostas
  • Marko Smith

    Alterar permissões e propriedade da pasta

    • 9 respostas
  • Marko Smith

    Como você reinicia o Apache?

    • 13 respostas
  • Marko Smith

    Como posso desinstalar o software?

    • 11 respostas
  • Marko Smith

    Como os PPAs podem ser removidos?

    • 26 respostas
  • Martin Hope
    justingrif Como adicionar um diretório ao PATH? 2009-07-23 12:42:23 +0800 CST
  • Martin Hope
    NES Como habilitar ou desabilitar serviços? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    Olivier Lalonde Como manter os processos em execução após encerrar a sessão ssh? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B Como posso adicionar um usuário como um novo sudoer usando a linha de comando? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans Como removo versões antigas do kernel para limpar o menu de inicialização? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve