rpm che fornisce un file


11

Qual è il comando per elencare quali rpms potrebbero fornire un determinato file: gli rpm che forniscono file già installati o gli rpms che potrebbero fornire file che non sono installati?

Risposte:


10

Per file / pacchetti già installati:

[jb @ smokey ~] $ rpm -qf / etc / sudoers
sudo-1.6.9p13-8.fc9.x86_64

Per file e pacchetti non ancora installati:

[jb @ smokey ~] $ yum whatprovides "/ etc / sudoers"
sudo-1.6.9p13-8.fc9.x86_64: consente l'accesso root limitato per utenti specifici
Repo: updates-newkey
Abbinato da:
Nome file: / etc / sudoers  

sudo-1.6.9p13-4.fc9.x86_64: consente l'accesso root limitato per utenti specifici
Repo: fedora
Abbinato da:
Nome file: / etc / sudoers

sudo-1.6.9p13-8.fc9.x86_64: consente l'accesso root limitato per utenti specifici
Repo: installato
Abbinato da:
Altro: fornisce una corrispondenza: / etc / sudoers

Nota che "yum whatprovides" è una corrispondenza di pattern, quindi se non sei sicuro di dove il file che stai cercando vivrebbe nella struttura della directory, circondalo con virgolette e asterischi:

yum whatprovides "* foo *"

Allo stesso modo se sei sicuro che quello che stai cercando è un binario che puoi fare:

yum whatprovides "* bin / foo"

5

Non conosco file non già installati ma per un file già installato è possibile utilizzare rpm -qif:

rpm -qif / bin / ls
Nome: coreutils Rilocazioni: (non trasferibile)
Versione: 5.97 Venditore: Red Hat, Inc.
Data di rilascio: 23.el5 Data di costruzione: lun 13 lug 2009 04:21:27 AMT
Data installazione: ven 11 set 2009 04:46:01 AM Build Host MDT: hs20-bc1-7.build.redhat.com
Gruppo: Ambiente di sistema / RPM sorgente di base: coreutils-5.97-23.el5.src.rpm
Dimensione: 9053874 Licenza: GPLv2 +
Firma: DSA / SHA1, mar 28 lug 2009 03:42:40 MDT, ID chiave 5326810137017186
Imballatore: Red Hat, Inc. 
URL:
Riepilogo: utilità di base GNU: un set di strumenti comunemente usati negli script di shell
Descrizione:
Queste sono le utility di base GNU. Questo pacchetto è la combinazione di
i vecchi file GNU fileutils, sh-utils e pacchetti textutils.
Se l'RPM è stato scaricato, è possibile eseguire una query per vedere cosa verrà installato:
rpm -qilp ./Server/jzlib-1.0.7-4jpp.1.i386.rpm
avviso: ./Server/jzlib-1.0.7-4jpp.1.i386.rpm: intestazione V3 firma DSA: NOKEY, ID chiave 37017186
Nome: jzlib Rilocazioni: (non trasferibile)
Versione: 1.0.7 Venditore: Red Hat, Inc.
Rilascio: 4jpp.1 Data di costruzione: mar 08 ago 2006 12:10:03 MDT
Data installazione: (non installato) Build Host: hs20-bc1-6.build.redhat.com
Gruppo: Sviluppo / Librerie / RPM sorgente Java: jzlib-1.0.7-4jpp.1.src.rpm
Dimensioni: 280436 Licenza: stile BSD
Firma: DSA / SHA1, gio 18 gen 2007 08:49:50 MST, ID chiave 5326810137017186
Imballatore: Red Hat, Inc. 
URL: 
Riepilogo: reimplementazione JZlib di zlib in Java puro
Descrizione:
Lo zlib è progettato per essere libero, per tutti gli usi, legalmente libero
- cioè, non coperto da alcun brevetto - compressione senza perdita di dati
libreria per l'utilizzo praticamente su qualsiasi hardware e sistema operativo del computer.
Lo zlib è stato scritto da Jean-loup Gailly (compressione) e Mark Adler
(decompressione).
/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
puoi omettere "-i" dalle opzioni se non ti interessa vedere tutte le informazioni sull'RPM.


2

Nei repository basati su yum, potresti provare qualcosa del genere yum provides */filename


1

in fin dei conti, non è possibile con giri / min puri. rpm fornisce questo solo per i pacchetti installati con opzione --whatprovides.

quando puoi usare yum, prova yum provides <filename>a cercare nel repository.


1

Se non vuoi (o non puoi) usare yum (ad es. Su una macchina offline), puoi cercare all'interno di RPM non installati facendo

# rpm -qp --filesbypkg *rpms-to-search-in* | grep *file-to-search-for*

Questo può richiedere del tempo, quindi sii paziente quando cerchi tra * .rpm su un repository di grandi dimensioni, come ad esempio un DVD di installazione. A differenza di "-qpl", "-qp --filesbypkg" elencherà sia il file sia l'RPM a cui appartiene, ad esempio:

# 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

nel qual caso il duplicato apparente è dovuto alla presenza di pacchetti i386 e x86_64 (resi evidenti dalla stringa "lib64").


-3

Temo di non essere sicuro di come farlo con RPMS, ma con Debian e Ubuntu puoi usare il programma apt-file

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.