Pertanyaan Bagaimana cara mengetahui dari mana paket yum telah diinstal?


Setelah saya menginstal paket oleh yum (dengan beberapa repositori dikonfigurasi), bagaimana saya dapat menemukan dari repositori yang telah diinstal?

Jika saya jalankan yum info package-name (atau yum list package-name), Saya hanya dapat melihat bahwa paket itu "terpasang".


134
2017-09-03 15:15




Pertanyaan bagus! Saya telah menginstal yum-utils dan mencoba salah satunya yang disebut repoquery, tetapi tidak berhasil. - Sean Staats
Lihat juga serverfault.com/questions/90409/… :) - warren
@warren tautan Anda tidak berguna karena tautan Anda adalah pertanyaan tentang "apa repo adalah rpm yang disimpan di" tetapi pertanyaan ini menanyakan "apa repo adalah rpm yang DIINSTAL dari". pertanyaan yang berbeda. - Trevor Boyd Smith
jika Anda terbiasa melakukannya rpm -qa|grep NAME maka kamu bisa melakukan yum list installed|grep NAME untuk menemukan apa repo rpm berasal. - Trevor Boyd Smith
@TrevorBoydSmith - 7 tahun yang lalu, sudah dekat. Hari ini adalah masih serupa. Tidak pernah mengatakan itu sama. Hanya saja itu terkait. - warren


Jawaban:


Dengan menginstal yum-utils, repoquery akan memberikan informasi yang Anda cari (di sini 'epel' menjadi 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.

75
2018-06-21 19:16



repoquery tampaknya tidak berfungsi dengan baik, saya mendapatkan versi paket yang berbeda yum info package_name, sepertinya tidak menanyakan repositori dalam urutan yang sama seperti yum. - Mike Miller
Sama di sini di beberapa server. yum info package_name mengembalikan hasil lebih dari repoquery rupanya. Inilah sebabnya mengapa pertukaran tumpukan tidak boleh mengunci suara. - reflexiv
Saya menemukan jawaban Xiong Chiamiov tidak benar. repoquery -i $pkg memberi repo dari mana a $pkg tersedia, bukan repo dari mana $pkg telah dipasang. Saya melakukan perintah itu dan rpm -qi $pkg dan dapatkan nomor versi yang berbeda. rpm menghasilkan nomor versi sebelumnya dibandingkan dengan repoquery.
Kemungkinan salinan lokal Anda sudah kedaluwarsa, atau sudah dipasang dengan perintah tambahan ke yum (mis. --use-mirror). Saya tidak berpikir itu mungkin selalu dapatkan jawaban yang benar. - Xiong Chiamiov


Versi apa yum?

Pada versi saat ini jika paket yang diinstal adalah versi yang sama dengan yang paling baru yang tersedia, maka repo yang 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, maka akan ditampilkan secara terpisah, dengan versi baru yang menunjukkan repo ini tersedia dari.


37
2017-09-03 16:25



Saya menggunakan yum 3.2.19 di CentOs 5.3 dan baris "Dari repo" tidak ada. - lg.
Yap ... Saya sedang mengujinya pada 3.2.21, yang tidak memiliki info itu di mana saja. Ketika saya melakukannya di kotak saya yang memiliki 3.2.23, itu berhasil. - Alex
Sekarang ini adalah solusi terbaik, tetapi tidak berlaku untuk RHEL / Centos 5.3. Saya menerima solusi ini, tetapi saya siap untuk memilih jawaban lain jika berlaku juga untuk RHEL / Centos 5.3. - lg.
Ini adalah no-go di CentOS 5.5 baik. - Mike Miller
"Dari rep" tidak tersedia bahkan dalam centos 5.8 - sepehr


Datang ke akhir tetapi (setidaknya pada Fedora 15) seseorang dapat menggunakan yumdb untuk pertanyaan serupa:

yumdb info 'python*'

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

yumdb search from_repo 'my-*-repo'

18
2017-10-26 09:01



Ia bekerja juga di Fedora 14 - lg.
bekerja pada RHEL 6.2 - pixelbeat


Jika semuanya gagal, Anda dapat memeriksa yumdb secara manual. Itu terletak di /var/lib/yum/yumdb dan berisi informasi terperinci tentang setiap paket yang terinstal. Anda akan sangat tertarik 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 hanya informasi yang Anda inginkan:

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

Versi selanjutnya akan menyediakan lebih banyak data; misalnya di EL 7, cermin dan URL yang tepat dari mana paket itu diunduh disimpan di sini.


8
2018-05-25 04:19



+1. Tetapi lebih baik melakukan sesuatu seperti: for i in /var/lib/yum/yumdb/b/*bind-utils*/*; do echo $i: `cat $i` | grep -oP 'from_repo:\ \K.*'; done, yang dalam contoh di atas mengembalikan: updates - Jauh lebih mudah dibaca! - Greg Dubicki
@GregDubicki Titik komando adalah untuk menunjukkan lebih banyak konteks dari apa yang sedang terjadi dan bagaimana hal-hal disimpan. Tampaknya gagal melakukannya: Tidak perlu grep apa pun di sini, dan Anda bahkan dapat menjatuhkan loop. Sangat sederhana cat /var/lib/yum/yumdb/b/*bind-utils*/from_repo adalah semua yang kamu butuhkan. - Michael Hampton♦


rpm -qi packagename

Akan memberi tahu Anda vendor dan pembuat paket


6
2018-02-09 14:48





Jika paket baru saja dipasang, Anda dapat melihat di / var / cache / yum.

Di dalam direktori itu, ada direktori untuk setiap repo, dan di dalamnya 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 a yum clean [packages|all] akan membersihkan 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 "Dari repo:", seperti yang ditunjukkan oleh 'theotherreceive', itu karena tidak ada dalam file primary.xml, jadi tidak akan ada cara untuk mengambil informasi itu. Oleh karena itu, jika paket tersebut ada dalam dua atau lebih file primary.xml, Anda harus menentukan prioritas repo pada sistem Anda.


4
2017-09-03 16:36



Solusi ini mungkin sebuah opsi (saya memilihnya), tetapi saya mencari jawaban yang pasti. - lg.


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

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


4
2018-04-07 21:20



Ini tampaknya berfungsi selama tidak ada paket yang diperbarui dalam repositori. Jadi, Anda perlu menjalankan pembaruan yum sebelum menggunakannya. - codewaggle


Berdasarkan dan jawaban oleh Swoogan
Pada RedHat dan CentOS yang bisa dilakukan

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

Hasilnya akan terlihat seperti ini

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

Dimana repository_name  adalah repositori di mana paket Anda dapat ditemukan, dan itu mungkin dipasang dari yang pertama dalam daftar (lihat yum repolist)


3
2018-05-30 00:19





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


1
2017-09-03 16:19



Solusi ini mungkin opsi (saya memilihnya), tetapi hanya untuk paket terinstal baru-baru ini, karena saya dapat mengubah repositori dan prioritasnya. - lg.


Bukan solusi yang bagus, tetapi saya menemukan bahwa daftar yum tersedia akan menunjukkan di mana versi terbaru setiap paket tersedia, misalnya:

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 dapat melakukan daftar yum yang tersedia di paket Anda, lalu membandingkan versi yang diinstal menggunakan daftar yum yang diinstal, dan memiliki gagasan yang bagus tentang repo mana asalnya jika versinya cocok.


1
2017-09-03 16:37



Ini benar hanya paket yang belum diinstal. - lg.
Sementara itu tidak menjawab pertanyaan OP persis, itu sangat membantu bagi saya karena bekerja di Centoss 5.5 hanya dengan yum dan tidak ada util lain, dan Anda dapat: 1. Hapus paket kemudian query untuk melihat di mana repo ini kemudian instal ulang , atau 2. Permintaan pada mesin yang berbeda tanpa paket yang diinstal. - lreeder