Bagaimana saya bisa mendapatkan daftar semua paket RPM yang telah diinstal pada sistem saya dari repo tertentu (misalnya, "epel")?
Bagaimana saya bisa mendapatkan daftar semua paket RPM yang telah diinstal pada sistem saya dari repo tertentu (misalnya, "epel")?
Jawaban:
yum list installed | grep @epel
dnf list installed | grep @epel
Pada RHEL6, seperti yang disarankan dalam jawaban stackoverflow ini , ada metode yang lebih menyeluruh untuk melakukan ini dengan yumdb:
yumdb search from_repo REPOID*
Repoid mengambil kartu liar.
Jika kita akan menipu dan menyalurkan output, maka kita dapat mencapai efek cetak-cantik juga. Ini salah satu yang digunakanawk
yumdb search from_repo REPOID* |awk -F"\n" '{ RS=""; print $1 }'
Menggunakan egrepataugrep -e
yumdb search from_repo REPOID* |egrep -v '(from_repo|^$)'
Untuk mendaftar semua paket yang tersedia di repositori tertentu, lakukan:
repoquery -a --repoid=REPONAME
repoquery -qa --repoid=REPONAME
repoquery -a --repoid=REPONAMEkarena menurut -qopsi halaman manual adalah untuk kompatibilitas rpmquery, tidak melakukan apa-apa.
-qasebenarnya gagal. Saya tidak dapat meningkatkan komentar karena sebelumnya menghapus upvote :( Saya memperbarui jawaban untuk mencerminkan itu.
dnf repo-pkgs <repoid> list installed
Perintah di atas menggunakan DNF untuk mendaftar paket yang diinstal dari <repoid>. Note repo-pkgshanyalah alias dari repository-packages.
Dari manhalaman:
man dnf | grep "repository-packages.*list.*installed" -A 1
Bacaan lebih lanjut:
man dnf
Output grepping yum adalah cara yang paling jelas:
yum list installed | grep @epel
Namun, Anda tidak dapat menampilkan properti paket tambahan dan sulit untuk menguraikan skrip. Alat repoquerydari paket yum-utilsadalah alat, tetapi tidak diinstal secara default.
repoquery -a --installed --qf "%{ui_from_repo} %{name}" | grep '^@epel'
dan contoh yang lebih kompleks:
repoquery -a --installed --qf "%-20{ui_from_repo} %-30{name} %-7{arch} %{epoch}:%-12{version} %-4{release}" | grep '^@epel'
yum repo-pkgs <repoid> list installeddapat digunakan untuk mengambil info yang sama dengan yumdb search from_repo <repoid>, tetapi dalam format yang berbeda.
# yum help repo-pkgs
repo-pkgs <repoid> <list|info|install|remove|upgrade|reinstall*|remove-or-*> [pkg(s)]
Treat a repo. as a group of packages, so we can install/remove all of them
aliases: repo-packages, repository-pkgs, repository-packages
epelOutput sampel :
# yumdb search from_repo epel
htop-2.2.0-1.el7.x86_64
from_repo = epel
supervisor-3.1.4-1.el7.noarch
from_repo = epel
# yum repo-pkgs epel list installed
Installed Packages
htop.x86_64 2.2.0-1.el7 @epel
supervisor.noarch 3.1.4-1.el7 @epel
Anda dapat memeriksa Vendortajuk dari rpms yang diinstal.
Contoh ini mencantumkan semua paket dari repositori VideoLAN :
rpm -q -a --qf "%{Name}:%{Vendor}\n" \
| grep -F ":VideoLAN Project (http://www.videolan.org)"
Jelas, Anda perlu menentukan apakah Vendorheader repositori Anda unik di antara repositori yang berbeda.
Untuk orang-orang yang hanya ingin menemukan repositori yang hilang:
yum list installed | awk '{print $3}' | sort | uniq
Ini akan mengembalikan semua repositori tempat Anda menginstal paket.