Qual é o comando para listar quais rpms podem fornecer um arquivo específico: o rpm que fornece arquivos já instalados ou rpms que podem fornecer arquivos que não estão instalados?
Qual é o comando para listar quais rpms podem fornecer um arquivo específico: o rpm que fornece arquivos já instalados ou rpms que podem fornecer arquivos que não estão instalados?
Respostas:
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 que fornece "/ etc / sudoers" sudo-1.6.9p13-8.fc9.x86_64: permite acesso root restrito para usuários especificados Repo: updates-newkey Correspondentes de: Nome do arquivo: / etc / sudoers sudo-1.6.9p13-4.fc9.x86_64: permite acesso root restrito para usuários especificados Repo: fedora Correspondentes de: Nome do arquivo: / etc / sudoers sudo-1.6.9p13-8.fc9.x86_64: permite acesso root restrito para usuários especificados Repo: instalado Correspondentes 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 você está procurando residiria na estrutura de diretório, coloque-o entre aspas e asteriscos:
yum whatprovides "* foo *"
Da mesma forma, se você tem certeza de que está procurando um binário, pode fazer:
yum whatprovides "* bin / foo"
Eu não sei sobre arquivos que ainda não estão instalados, mas para um arquivo que já está instalado, você pode usar o rpm -qif:
rpm -qif / bin / ls Nome: coreutils Realocações: (não realocável) Versão: 5.97 Fornecedor: Red Hat, Inc. Versão: 23.el5 Data da compilação: seg 13 jul 2009 04:21:27 AM MDT Data da instalação: Sex 11 Sep 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 principais utilitários do GNU: um conjunto de ferramentas comumente usadas em scripts de shell Descrição : Estes são os principais utilitários do GNU. Este pacote é a combinação de os antigos pacotes GNU fileutils, sh-utils e textutils.Se você tiver baixado o RPM, poderá consultar 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: realocações jzlib: (não relocável) Versão: 1.0.7 Fornecedor: Red Hat, Inc. Versão: 4jpp.1 Data de compilação: ter 08 ago 2006 12:10:03 MDT Data da 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: BSD-style Assinatura: DSA / SHA1, Qui 18 Jan 2007 08:49:50 AM MST, ID da chave 5326810137017186 Empacotador: Red Hat, Inc. URL: Resumo: Reimplementação JZlib do zlib em Java puro Descrição : O zlib foi projetado para ser gratuito, de uso geral e legalmente livre - isto é, não coberto por nenhuma patente - compactação de dados sem perdas biblioteca para uso em praticamente qualquer hardware 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.
Se você não deseja (ou não pode) usar o yum (por exemplo, em uma máquina off-line), 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, portanto, 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 se deve à presença dos pacotes i386 e x86_64 (tornados óbvios a partir da string "lib64").