
Qual é o comando para listar quais rpms podem fornecer um determinado arquivo: os rpms que fornecem arquivos já instalados ou os rpms que podem fornecer arquivos que não estão instalados?
Responder1
Para arquivos/pacotes já instalados:
[jb@smokey ~]$ rpm -qf /etc/sudoers sudo-1.6.9p13-8.fc9.x86_64
Para arquivos e pacotes ainda não instalados:
[jb@smokey ~]$ yum o que fornece "/etc/sudoers" sudo-1.6.9p13-8.fc9.x86_64: Permite acesso root restrito para usuários especificados Repo: atualizações-newkey Correspondente de: Nome do arquivo: /etc/sudoers sudo-1.6.9p13-4.fc9.x86_64: Permite acesso root restrito para usuários especificados Repositório: fedora Correspondente de: Nome do arquivo: /etc/sudoers sudo-1.6.9p13-8.fc9.x86_64: Permite acesso root restrito para usuários especificados Repositório: instalado Correspondente de: Outros: fornece correspondência: /etc/sudoers
Observe que "yum whatprovides" é uma correspondência de padrão, portanto, se você não tiver certeza de onde o arquivo que está procurando ficaria na estrutura de diretórios, coloque-o entre aspas e asteriscos:
yum, o que fornece "*foo*"
Da mesma forma, se tiver certeza de que o que está procurando é um binário, você pode fazer:
yum, o que fornece "*bin/foo"
Responder2
Não sei sobre arquivos que ainda não estão instalados, mas para um arquivo que já está instalado você pode usar rpm -qif:
rpm -qif /bin/ls Nome: coreutils Realocações: (não relocável) Versão: 5.97 Fornecedor: Red Hat, Inc. Lançamento: 23.el5 Data de construção: segunda-feira, 13 de julho de 2009, 04:21:27 AM MDT Data de instalação: Sexta-feira, 11 de setembro de 2009, 04:46:01 AM MDT Build Host: hs20-bc1-7.build.redhat.com Grupo: Ambiente do sistema/RPM de origem base: coreutils-5.97-23.el5.src.rpm Tamanho: 9053874 Licença: GPLv2+ Assinatura: DSA/SHA1, terça-feira, 28 de julho de 2009, 03:42:40 MDT, ID da chave 5326810137017186 Empacotador: Red Hat, Inc. URL: Resumo: Os utilitários principais do GNU: um conjunto de ferramentas comumente usadas em scripts shell Descrição : Estes são os utilitários principais do GNU. Este pacote é a combinação de os antigos pacotes GNU fileutils, sh-utils e textutils.Se você baixou o RPM você pode consultar para ver o que vai instalar:
rpm -qilp ./Server/jzlib-1.0.7-4jpp.1.i386.rpm aviso: ./Server/jzlib-1.0.7-4jpp.1.i386.rpm: Assinatura DSA do cabeçalho V3: NOKEY, ID da chave 37017186 Nome: jzlib Relocações: (não relocável) Versão: 1.0.7 Fornecedor: Red Hat, Inc. Lançamento: 4jpp.1 Data de construção: terça-feira, 8 de agosto de 2006, 12h10:03 MDT Data de instalação: (não instalado) Host de compilação: hs20-bc1-6.build.redhat.com Grupo: Desenvolvimento/Bibliotecas/Java Source RPM: jzlib-1.0.7-4jpp.1.src.rpm Tamanho: 280436 Licença: estilo BSD Assinatura: DSA/SHA1, quinta-feira, 18 de janeiro de 2007, 08:49:50 MST, ID da chave 5326810137017186 Empacotador: Red Hat, Inc. URL: Resumo: JZlib reimplementação de zlib em Java puro Descrição : O zlib foi projetado para ser um software gratuito, de uso geral e legalmente desimpedido. - isto é, não coberto por nenhuma patente - compactação de dados sem perdas biblioteca para uso em praticamente qualquer hardware de computador e sistema operacional. O zlib foi escrito por Jean-loup Gailly (compressão) e Mark Adler (descompressão). /usr/lib/gcj/jzlib/jzlib-1.0.7.jar.db /usr/lib/gcj/jzlib/jzlib-1.0.7.jar.so /usr/share/doc/jzlib-1.0.7 /usr/share/doc/jzlib-1.0.7/LICENSE.txt /usr/share/java/jzlib-1.0.7.jar /usr/share/java/jzlib.jarvocê pode omitir o "-i" das opções se não quiser ver todas as informações sobre o RPM.
Responder3
Em repositórios baseados em yum, você poderia tentar algo como yum provides */filename
Responder4
Se você não quiser (ou não puder) usar o yum (por exemplo, em uma máquina offline), você pode pesquisar dentro de RPMs não instalados fazendo
# rpm -qp --filesbypkg *rpms-to-search-in* | grep *file-to-search-for*
Isso pode levar algum tempo, então seja paciente ao pesquisar entre *.rpm em um repositório grande, como um DVD de instalação, por exemplo. Mas, diferentemente de "-qpl", "-qp --filesbypkg" listará o arquivo e o RPM ao qual ele pertence, por exemplo:
# rpm -qpl p*.rpm|grep libpq.so.4
/usr/lib/libpq.so.4
/usr/lib64/libpq.so.4
# rpm -qp --filesbypkg p*.rpm|grep libpq.so.4
postgresql-libs /usr/lib/libpq.so.4
postgresql-libs /usr/lib64/libpq.so.4
nesse caso, a aparente duplicata é devido à presença dos pacotes i386 e x86_64 (tornado óbvio pela string "lib64").