sviluppo-web-qa.it

Come sapere da quale repository yum è stato installato un pacchetto?

Dopo aver installato un pacchetto da yum (con più repository configurati), come posso trovare da quale repository è stato installato?

Se corro yum info package-name (o yum list package-name), Posso solo vedere che il pacchetto è "installato".

159
lg.

Con yum-utils installato, repoquery fornirà le informazioni che cerchi (qui 'epel' è il repository).

└─[$]> repoquery -i cherokee

Name        : cherokee
Version     : 0.99.49
Release     : 1.el5
Architecture: i386
Size        : 8495964
Packager    : Fedora Project
Group       : Applications/Internet
URL         : http://www.cherokee-project.com/
Repository  : epel
Summary     : Flexible and Fast Webserver
Description :
Cherokee is a very fast, flexible and easy to configure Web Server. It supports
the widespread technologies nowadays: FastCGI, SCGI, PHP, CGI, TLS and SSL
encrypted connections, Virtual hosts, Authentication, on the fly encoding,
Apache compatible log files, and much more.

Quale versione di yum?

Nella versione corrente se il pacchetto installato è la stessa versione più recente disponibile, viene mostrato il repository da cui è stato installato.

$ yum info irssi
Installed Packages
Name       : irssi
Arch       : i586
Version    : 0.8.14
Release    : 1.fc11
Size       : 2.3 M
Repo       : installed
From repo  : updates
Summary    : Modular text mode IRC client with Perl scripting
URL        : http://irssi.org/
License    : GPLv2+
Description: Irssi is a modular IRC client with Perl scripting. Only text-mode
           : frontend is currently supported. The GTK/GNOME frontend is no
           : longer being maintained.

$ yum --version
3.2.23

Se è disponibile un pacchetto più recente, verrà mostrato separatamente, con la nuova versione che mostra il repository da cui è disponibile.

45
theotherreceive

Arrivando in ritardo ma (almeno su Fedora 15) si può usare yumdb per domande simili:

yumdb info 'python*'

E ciò di cui avevo effettivamente bisogno per elencare i pacchetti da determinati repository:

yumdb search from_repo 'my-*-repo'
22
Martian

Se tutto il resto fallisce, è possibile controllare manualmente il yumdb. Si trova in /var/lib/yum/yumdb e contiene informazioni dettagliate su ogni pacchetto installato. Sarai particolarmente interessato a from_repo. Ad esempio, per il bind-utils pacchetto:

# for i in /var/lib/yum/yumdb/b/*bind-utils*/*; do echo $i: `cat $i`; done
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/checksum_data: 39f7840f93d3d76825a9e8da79cfe0366f7fad68f018a273477aee62cccfa3f4
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/checksum_type: sha256
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/command_line: install bind-utils
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo: updates
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo_revision: 1397654451
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo_timestamp: 1397654759
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/installed_by: 0
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/reason: user
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/releasever: 6

Per ottenere solo le informazioni desiderate:

# cat /var/lib/yum/yumdb/b/*bind-utils*/from_repo
updates

Le versioni successive forniranno ancora più dati; ad esempio in EL 7 il mirror e l'URL esatti da cui è stato scaricato il pacchetto sono memorizzati qui.

11
Michael Hampton
rpm -qi packagename

Ti dirà il venditore e il packager

6
Esmail

Per vedere cosa è installato da repo epel: (Dovrebbe funzionare sotto Centos 5.5) nota, se non hai un repo chiamato epel, sputerà ogni cosa installata.

repoquery --repoid = epel -a | Elenco xargs yum installato

5
David A.

Basato su e risposta di Swoogan
Su RedHat e CentOS si può fare

Sudo grep -ir PACKAGE_NAME /var/cache/yum/

I risultati dovrebbero assomigliare a qualcosa

Binary file /var/cache/yum/REPOSITORY_NAME/primary.xml.gz.sqlite matches

Dove repository_name è il repository in cui è possibile trovare il pacchetto ed è stato probabilmente installato dal primo in un elenco (vedere yol repolist)

4
iddqd

Se il pacchetto è stato installato di recente, è possibile cercare in/var/cache/yum.

All'interno di quella directory, c'è una directory per ogni repository, e in quella una directory di pacchetti. Quindi, faresti qualcosa del tipo:

find /var/cache/yum -name [package-name]*

Tuttavia, la cache deve essere abilitata nel file /etc/yum.conf:

cachedir=/var/cache/yum
keepcache=1

Nota che un yum clean [packages|all] cancella la directory della cache.

Se la directory della cache è vuota, esiste un modo alternativo. Le informazioni lette da yum info [package] proviene da /var/cache/yum/[repo lasting/primary.xml.gz

Puoi consultare il file inserendo:

gunzip -d -c /var/cache/yum/[repo]/primary.xml.gz | grep '<name>[package]'

Tuttavia, su macchine in cui yum info [package] non visualizza "From repo:", come indicato da 'theotherreceive', è perché non si trova nel file primary.xml, quindi non ci sarà modo di recuperare tali informazioni. Pertanto, se il pacchetto si trova in due o più file primary.xml, sarà necessario determinare la priorità di repository sul proprio sistema.

4
Swoogan

L'approccio più semplice e diretto senza l'installazione di strumenti aggiuntivi, il greping o la produzione di informazioni estranee è semplicemente:

yum list installed [package name]

La terza colonna fornirà l'ID del repository da cui è stato installato il pacchetto.

Questo è stato menzionato in un commento sulla domanda originale usando grep, ma non è necessario. Puoi semplicemente passare il nome del pacchetto direttamente a yum per filtrare.

1
Scott Buchanan

Puoi aggiungere il flag dettagliato a "informazioni yum":

yum info -v <package_name>

Il repository di installazione sarà nell'output "From repo".

1
smw

Quelle informazioni vengono catturate da qualche parte? Il pacchetto non contiene tali informazioni e a yum non importa dopo aver trovato il pacchetto. Probabilmente potresti metterlo insieme capendo quali repository hanno il pacchetto e quindi determinare quale ha la priorità.

1
Alex

Non è un'ottima soluzione, ma ho scoperto che l'elenco yum disponibile ti mostrerà dove è disponibile la versione più aggiornata di ciascun pacchetto, ad es .:

lista yum disponibile | grep gstreamer

PackageKit-gstreamer-plugin.x86_64 0.3.16-1.fc10          updates               

aggiornamenti di bluez-gstreamer.i386 4.30-2.fc10
gstreamer.i386 0.10.21-2.fc10 Fedora
gstreamer-devel.i386 0.10.21-2.fc10 Fedora
gstreamer-devel.x86_64 0.10.21-2.fc10 Fedora
gstreamer-plugins-bad-devel.i386 0.10.9-1.fc10 rpm privo di fusione
gstreamer-plugins-bad-devel.x86_64 0.10.9-1.fc10 rpm privo di fusione

Quindi potresti fare un elenco di yum disponibile sul tuo pacchetto, quindi confrontare la tua versione installata usando l'elenco di yum installato e avere una buona idea di quale repo provenga se le versioni corrispondono.

1
gareth_bowles

Nessuno dei comandi sopra ha funzionato per me. Questo è quello che dovevo fare.

yum provides "*compat-libstdc*"

Un buon riferimento è qui.

https://access.redhat.com/sites/default/files/attachments/rh_yum_cheatsheet_1214_jcs_print-1.pdf

1
cokedude

Quindi so che questa è una domanda un po 'vecchia, ma emerge dalla ricerca su Google per quello che stavo cercando.

Esiste anche un metodo per ottenere un elenco univoco di repository utilizzati:

# repoquery -ai | grep 'Repository  : ' | sort | uniq

Questo elencherà i repository da cui sono stati installati i pacchetti.

1
Steven Haigh