Domanda

Speriamo che la versione breve della domanda: se mi trovo su una macchina su cui è installato un pacchetto specifico, c'è un comando yum che mi dirà quale dei suoi archivi configurati ha fornito quel pacchetto? (O in alternativa, quale repository fornirebbe un pacchetto ancora da installare.)

Sfondo nel caso sia necessario un contesto: abbiamo un labirinto di repository yum da cui attingiamo. Ho una macchina su cui è installato un particolare pacchetto rpm e un'altra macchina con un labirinto apparentemente insufficiente di repository configurato, e quindi non sono in grado di installare il pacchetto che desidero su quella macchina. Devo aggiungere i repository minimi necessari alla nuova macchina. Non posso semplicemente sparare ai repository da una macchina all'altra. E solo uscire e prendere l'rpm non è un'opzione perché ho bisogno che questo sia riproducibile.

È stato utile?

Soluzione

yum list packagename

Ciò mostrerà da quale repository il pacchetto si trova nella terza colonna dell'output.

Per i pacchetti già installati, ciò non funzionerà, poiché la terza colonna mostra solo "installato". In tal caso puoi fare ad es. " rpm -qi nomepacchetto " ;, in genere i tag Vendor, Packager e Build Host forniranno un'indicazione a quale repository appartiene il pacchetto. Inoltre è abbastanza comune che alcuni simboli di repository vengano aggiunti al numero di versione del pacchetto.

Altri suggerimenti

repoquery -i {packagename} 

Questo ti darà il nome del repository effettivo rispetto al "installato" non utile che yum ritorni. il repoquery è fornito da yum-utils.

Puoi usare yum -v search che ti mostrerà i pacchetti insieme al repository in cui è presente. Se aggiungi anche --showduplicates vedrai tutte le versioni di quel pacchetto.

Credito a: http://www.spinics.net/linux/fedora /yum/msg11975.html

Per un singolo pacchetto, puoi trovarlo con

PACKAGE=ruby-enterprise
repoquery --qf "%{repoid}" $PACKAGE

Sostituisci $ PACCHETTO con il nome del pacchetto che ti interessa.

Puoi trovare tutti i pacchetti che provengono da un repository specifico con

REPO=ruby-enterprise-opt
repoquery --repoid=$REPO -a --qf "%{name}" | sort > repo_packages
rpm -qa --qf "%{name}\n" | sort > installed_packages
comm -1 -2 repo_packages installed_packages

Sostituisci $ REPO con l'id del repository che ti interessa; puoi vedere gli ID di tutti i tuoi repository abilitati con yum repolist .

Ecco alcuni modi per scoprire il repository per un determinato pacchetto installato:

rpm -qi {packagename}

o

repoquery -i {packagename}

Riferimenti:

yum reinstall [package_name]

Quindi, quando ti viene chiesto di confermare, puoi scegliere N per non cambiare il tuo sistema:

Esempio di output in centos:

Resolving Dependencies
--> Running transaction check
---> Package mc.x86_64 1:4.6.1a-35.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================================================
 Package                      Arch                             Version                                   Repository                      Size
==============================================================================================================================================
Reinstalling:
 mc                           x86_64                           1:4.6.1a-35.el5                           base                           2.1 M

Transaction Summary
==============================================================================================================================================
Remove        0 Package(s)
Reinstall     1 Package(s)
Downgrade     0 Package(s)

Total download size: 2.1 M
Is this ok [y/N]:
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top