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?
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:
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"
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.jarpuoi omettere "-i" dalle opzioni se non ti interessa vedere tutte le informazioni sull'RPM.
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").