pengembangan-web-mp.com

Bagaimana cara mengetahui dari repositori yum mana suatu paket telah diinstal?

Setelah saya menginstal paket dengan yum (dengan beberapa repositori yang dikonfigurasi), bagaimana saya bisa menemukan dari repositori mana ia telah diinstal?

Jika saya menjalankan yum info package-name (atau yum list package-name), Saya hanya bisa melihat bahwa paket itu "diinstal".

159
lg.

Dengan yum-utils diinstal, repoquery akan memberikan informasi yang Anda cari (di sini 'epel' adalah repositori).

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

Apa versi yum?

Pada versi saat ini jika paket yang diinstal adalah versi yang sama dengan yang terbaru tersedia maka repo itu diinstal dari ditampilkan.

$ 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

Jika ada paket yang lebih baru tersedia, maka itu akan ditampilkan secara terpisah, dengan versi baru menunjukkan dari repo itu tersedia.

45
theotherreceive

Datang terlambat, tetapi (setidaknya pada Fedora 15) orang dapat menggunakan yumdb untuk pertanyaan serupa:

yumdb info 'python*'

Dan apa yang sebenarnya saya perlukan untuk mendaftar paket dari repo yang diberikan:

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

Jika semuanya gagal, Anda dapat memeriksa yumdb secara manual. Itu terletak di /var/lib/yum/yumdb dan berisi informasi terperinci tentang setiap paket yang diinstal. Anda akan sangat tertarik pada from_repo. Misalnya, untuk bind-utils paket:

# 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

Untuk mendapatkan informasi yang Anda inginkan:

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

Versi yang lebih baru akan memberikan lebih banyak data; misalnya dalam EL 7 mirror dan URL yang tepat dari mana paket itu diunduh disimpan di sini.

11
Michael Hampton
rpm -qi packagename

Akan memberi tahu Anda vendor dan pembuat paket

6
Esmail

Untuk melihat apa yang diinstal dari repo epel: (Harus bekerja di bawah Centos 5.5) perhatikan, jika Anda tidak memiliki repo bernama epel, itu akan memuntahkan semua hal yang diinstal.

repoquery --repoid = epel -a | xargs daftar yum diinstal

5
David A.

Berdasarkan dan dijawab oleh Swoogan
Di RedHat dan CentOS orang bisa melakukannya

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

Hasilnya akan terlihat seperti

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

Di mana repository_name adalah repositori tempat paket Anda dapat ditemukan, dan itu mungkin diinstal dari yang pertama dalam daftar (lihat yum repolist)

4
iddqd

Jika paket diinstal baru-baru ini, Anda dapat melihat di/var/cache/yum.

Di dalam direktori itu, ada direktori untuk setiap repo, dan dalam direktori paket. Jadi, Anda akan melakukan sesuatu seperti:

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

Namun, cache harus diaktifkan di file /etc/yum.conf Anda:

cachedir=/var/cache/yum
keepcache=1

Perhatikan bahwa yum clean [packages|all] akan menghapus direktori cache.

Jika direktori cache kosong, ada cara alternatif. Informasi yang dibaca oleh yum info [package] berasal dari /var/cache/yum/[repo[/primary.xml.gz

Anda dapat melihat melalui file dengan memasukkan:

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

Namun, pada mesin di mana yum info [package] tidak menampilkan "From repo:", seperti yang ditunjukkan oleh 'theotherreceive', itu karena tidak ada di file primary.xml, jadi tidak akan ada cara untuk mengambil informasi itu. Oleh karena itu, jika paket tersebut dalam dua atau lebih file primary.xml, Anda harus menentukan prioritas repo pada sistem Anda.

4
Swoogan

Pendekatan paling sederhana dan paling mudah tanpa menginstal alat tambahan, menangkap atau mengeluarkan informasi asing adalah hanya:

yum list installed [package name]

Kolom ketiga akan memberikan ID dari repositori tempat paket itu diinstal.

Ini disebutkan dalam komentar pada pertanyaan asli menggunakan grep, tapi itu tidak perlu. Anda bisa meneruskan nama paket langsung ke yum untuk difilter.

1
Scott Buchanan

Anda dapat menambahkan bendera verbose ke "info yum":

yum info -v <package_name>

Repositori instalasi akan berada di bawah output "Dari repo".

1
smw

Apakah informasi itu ditangkap di mana saja? Paket tidak memiliki informasi itu, dan yum tidak peduli setelah menemukan paket. Anda mungkin bisa menyatukannya dengan mencari tahu repo apa yang memiliki paket dan kemudian menentukan mana yang memiliki prioritas.

1
Alex

Bukan solusi yang hebat, tetapi saya menemukan bahwa daftar yum yang tersedia akan menunjukkan kepada Anda di mana versi terbaru dari setiap paket tersedia, mis .:

daftar yum tersedia | grep gstreamer

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

bluez-gstreamer.i386 4.30-2.fc10 pembaruan
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 rpmfusion-free
gstreamer-plugins-bad-devel.x86_64 0.10.9-1.fc10 rpmfusion-free

Jadi Anda bisa melakukan daftar yum yang tersedia pada paket Anda, lalu membandingkan versi yang diinstal menggunakan daftar yum yang diinstal, dan memiliki ide bagus tentang repo mana yang berasal dari jika versi cocok.

1
gareth_bowles

Tidak satu pun dari perintah di atas bekerja untuk saya. Inilah yang harus saya lakukan.

yum provides "*compat-libstdc*"

Referensi yang bagus ada di sini.

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

1
cokedude

Jadi saya tahu ini adalah pertanyaan yang agak lama - tetapi muncul di pencarian google untuk apa yang saya cari.

Ada juga metode untuk mendapatkan daftar unik dari repo yang digunakan:

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

Ini akan mencantumkan repositori yang memiliki paket yang diinstal.

1
Steven Haigh