Bir paketin hangi yum havuzundan kurulduğunu nasıl bilebilirim?


152

Yum tarafından bir paket yükledikten sonra (birden fazla havuz yapılandırılmış), hangi depodan kurulduğunu nasıl bulabilirim?

Çalıştırırsam yum info package-name(veya yum list package-name), yalnızca paketin "yüklü" olduğunu görebiliyorum.


1
Harika soru! Yum-utils yükledim ve bir repoquery denilen utils denedim, ama hayır şans.
Sean Staats,


@ warren bağlantınız kullanışlı değil çünkü bağlantınız "hangi reponun depolanmış bir rpm olduğunu" sorusudur, ancak bu soru "hangi reponun KURULULAN bir rpm'den" olduğunu sorar. Farklı sorular
Trevor Boyd Smith

Eğer yapmaya kullanılırsa rpm -qa|grep NAMEo zaman olabilir yapmak yum list installed|grep NAMErpm den ne repo bulmak için .
Trevor Boyd Smith

@TrevorBoydSmith - 7 yıl önce yakındı. Bugün hala benzer. Asla aynı olduğunu söylemedi . Sadece bununla alakalıydı.
warren

Yanıtlar:


82

Yum-utils yüklü olduğunda, repoquery istediğiniz bilgiyi sağlayacaktır (burada 'epel' depo).

└─[$]> 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.

2
repoquery doğru çalışmıyor gibi görünüyor, daha sonra farklı paket sürümleri alıyorum yum info package_name, depoları yum ile aynı sırayla sorgulamıyor gibi görünüyor.
Mike Miller

Birkaç sunucuda da aynı. yum info package_namegörünüşe göre repoquery daha fazla sonuç verir. Bu yüzden yığın değişimi oylara kilitlenmemelidir.
reflexiv

8
Xiong Chiamiov'un cevabının doğru olmadığını gördüm. kurulduğu repoyu değil, repoquery -i $pkga $pkgolanı olan repoyu verir $pkg. Bu komutu yaptım rpm -qi $pkgve farklı sürüm numaraları aldım. rpmdaha önceki bir sürüm numarasıyla sonuçlandı repoquery.

Yerel kopyanızın güncel olmaması veya yum (örneğin --use-mirror) komutları eklenmiş olması mümkündür . Her zaman doğru cevabı bulmanın mümkün olduğunu sanmıyorum .
Xiong Chiamiov

user158844 haklıdır. Bu, size hangi paketlerin belirli bir paket sağladığını ancak belirli bir paketin hangi depodan geldiğini söyleyemez. Belirli bir repo bir paket kurduysanız, repo, o zaman, yeni yüklenen repo listeleme paketlerin dönecekti böyle 'repoquery -i' çalışan, aynı isimde bir paket sağlayan başka repo yüklü olduğu kaldırılmış değil bir o aslında paketi sizden yüklediniz. Asker, kurulu yazılımın gerçekte hangi paketten geldiğini bilmek istiyor. Mevcut repolar aynı isimde paketlere sahiplerdi.
Todd Walton

43

Yum hangi sürümü?

Mevcut sürümde eğer kurulu paket mevcut olan en yeni sürümle aynı ise, kurulduğu repo gösterilir.

$ 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

Eğer daha yeni bir paket mevcutsa, ayrı olarak gösterilecektir, yeni sürüm mevcut olduğu repoyu gösterir.


CentOs 5.3'te yum 3.2.19 kullanıyorum ve "Repo'dan" satırı mevcut değil.
lg.

Evet ... 3.2.21 üzerinde test etmiştim, bu hiçbir yerde bu bilgiye sahip değildi. 3.2.23 olan kutumda yaptığımda, işe yaradı.
Alex

Şimdi bu en iyi çözüm, ancak RHEL / Centos 5.3 için geçerli değil. Bu çözümü kabul ediyorum, ancak RHEL / Centos 5.3 için de geçerliyse başka bir cevap seçmeye hazırım.
lg.

2
Bu da CentOS 5.5'teki no-go.
Mike Miller

"Rep itibaren" bile centos kullanılamaz 5.8
sepehr

22

Geç gelmekle birlikte (en azından Fedora 15’te) benzer sorgular için yumdb kullanabilirsiniz:

yumdb info 'python*'

Ve verilen depolardan paketleri listelemek için gerçekte gerekenler:

yumdb search from_repo 'my-*-repo'

Ayrıca Fedora 14
lg'de

1
RHEL 6.2 ile çalışıyor
pixelbeat

8

Hepsi başarısız olursa, yumdb'yi manuel olarak inceleyebilirsiniz. Bu yer alır /var/lib/yum/yumdbve her yüklü paketi üzerinde ayrıntılı bilgiler içerir. Özellikle ilgileneceksin from_repo. Örneğin, bind-utilspaket için:

# 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

Sadece istediğiniz bilgileri almak için:

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

Daha sonraki sürümler daha da fazla veri sağlayacaktır; Örneğin, EL 7'de paketin indirildiği tam ayna ve URL burada saklanır.


+1. Ancak for i in /var/lib/yum/yumdb/b/*bind-utils*/*; do echo $i: `cat $i` | grep -oP 'from_repo:\ \K.*'; doneyukarıdaki gibi bir örnekte : şöyle bir şey yapmak daha iyidir : updates- çok daha okunaklı!
Greg Dubicki,

1
@GregDubicki Komutun amacı, neler olup bittiğini ve işlerin nasıl saklandığını daha fazla göstermekti. Görünüşe göre bunu yapmak başarısız oldu: Burada hiçbir grepşeye gerek yok ve hatta döngüyü bile bırakabilirsiniz. cat /var/lib/yum/yumdb/b/*bind-utils*/from_repoİhtiyacın olan tek şey çok basit .
Michael Hampton

6
rpm -qi packagename

Size satıcı ve paketleyiciyi söyleyecektir


5

Repo epelinden nelerin kurulu olduğunu görmek için: (Centos 5.5 altında çalışmalı) not edin, epel adında bir repo yoksa, kurulu her şeyi tükürecektir.

repoquery --repoid = epel -a | xargs yum listesi yüklü


1
Bu depoda güncellenmiş bir paket olmadığı sürece çalışıyor gibi görünüyor. Bu yüzden kullanmadan hemen önce yum güncellemesi yapmanız gerekiyor.
codewaggle

4

Paket yakın bir zamanda kurulmuşsa, / var / cache / yum dizinine bakabilirsiniz.

Bu dizinde her repo için bir dizin var ve o da bir paket dizini var. Yani, şöyle bir şey yapardın:

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

Ancak, /etc/yum.conf dosyanızda önbellek etkinleştirilmelidir:

cachedir=/var/cache/yum
keepcache=1

Bir yum clean [packages|all]önbellek dizini temizleyeceğini unutmayın .

Önbellek dizini boşsa, alternatif bir yol vardır. Okunan bilgiler yum info [package]/var/cache/yum/LEXrepoXE/primary.xml.gz adresinden gelir.

Aşağıdakileri girerek dosyaya bakabilirsiniz:

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

Ancak, yum info [package]'theotherreceive' ile gösterildiği gibi, "From repo:" gösterilmeyen makinelerde , bunun nedeni birincil.xml dosyasında olmamasıdır, bu nedenle bu bilgiyi almanın bir yolu olmayacaktır. Bu nedenle, paket iki veya daha fazla birincil.xml dosyasındaysa, sisteminizde repo önceliğini belirlemeniz gerekir.


Bu çözüm belki bir seçenek olabilir (oy veririm), ancak kesin bir cevap arıyorum.
lg.

4

Swoogan
On RedHat ve CentOS’un cevabı ve yanıtı

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

Sonuçlar şöyle görünmeli

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

Nerede repository_name paket bulunabilir depo olduğunu ve muhtemelen (yum repolist bakınız) listedeki ilk birinden yüklendiği


1

Bu bilgi herhangi bir yerde toplanmış mı? Paket bu bilgilere sahip değil ve yum paketi bulduktan sonra umursamıyor. Hangi repoların pakete sahip olduğunu tespit edip hangisinin önceliği olduğunu belirleyerek muhtemelen bir araya getirebilirsiniz.


Bu çözüm belki bir seçenek olabilir (oy veririm), ancak yalnızca yeni kurulan paket için, çünkü depoyu ve önceliğini değiştirebilirim.
lg.

1

Harika bir çözüm değil, ancak mevcut yum listesinin size her paketin en güncel sürümünün nerede olduğunu göstereceğini gördüm, örneğin:

yum listesi mevcut | grep gstreamer

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

bluez-gstreamer.i386 4.30-2.fc10 güncellemeler
gstreamer.i386 0.10.21-2.fc10 fötr
gstreamer-devel.i386 0.10.21-2.fc10 fötr
gstreamer-devel.x86_64 0.10.21-2.fc10 fötr şapka
gstreamer- plugins-bad-devel.i386 0.10.9-1.fc10 rpmfusion içermeyen
gstreamer-plugins-bad-devel.x86_64 0.10.9-1.fc10 rpmfusion içermez

Böylece paketinizde mevcut olan bir yum listesini yapabilir, daha sonra yüklü olan yum listesini kullanarak kurulu sürümünüzü karşılaştırabilir ve sürümler eşleşiyorsa hangi repodan geldiğine dair iyi bir fikriniz olabilir.


Bu doğrudur, sadece paket henüz kurulmamıştır.
lg.

OPs sorusuna tam olarak cevap vermese de, benim için çok yardımcı oldu, çünkü Centoss 5.5'te sadece yum ve başka hiçbir yardımcı program olmadan çalışıyor ve yapabilecekleriniz: 1. Paketi kaldırın ve sorgunun nerede olduğunu görmek için sorguyu yeniden yükleyin. , veya 2. Paket kurulu olmadan farklı bir makinede sorgulama.
lreeder

1

Ayrıntılı bayrağı "yum info" ya ekleyebilirsiniz:

yum info -v <package_name>

Kurulum deposu "From repo" çıktısının altında olacaktır.


Bu yum-utils kurulumu gerektirmeyen tek çözüm gibi görünüyor.
Mark Edington

Bu sadece benim için "yüklü" listeler.
frogstarr78

1

Bu yüzden bunun biraz eski bir soru olduğunu biliyorum - ama aradığım şeyi google aramaya çıkardı.

Ayrıca kullanılan repoların benzersiz bir listesini elde etmek için bir yöntem vardır:

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

Bu, paketleri kurulu olan depoları listeler.


1

Fazladan herhangi bir araç kurmadan, fazladan bilgi vermeden ya da çıkarmadan en basit ve en basit yaklaşım basitçe:

yum list installed [package name]

Üçüncü sütun, paketin yüklendiği havuzun kimliğini sağlayacaktır.

Bu, grep kullanarak orijinal soru hakkında yapılan bir yorumda belirtilmiştir, ancak bu gerekli değildir. Paket adını doğrudan yumfiltrelemek için geçirebilirsiniz .



Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.