rpm que fornece um arquivo

11

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?

David Nehme
fonte

Respostas:

10

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"
cagenut
fonte
5

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.jar
você pode omitir o "-i" das opções se não quiser ver todas as informações sobre o RPM.

salparadise
fonte
2

Nos repositórios baseados no yum, você pode tentar algo como yum provides */filename

Trey
fonte
1

depois, não é possível com rpm pura. rpm proporciona isso só para os pacotes instalados com a opção --whatprovides.

quando você pode usar o yum, tente yum provides <filename>pesquisar no repositório.

cristão
fonte
1

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").

Tulio Silva
fonte
-3

Receio não ter certeza de como fazê-lo com o RPMS, mas com o Debian e o Ubuntu você pode usar o programa apt-file

Rory
fonte