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 egrep
ataugrep -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=REPONAME
karena menurut -q
opsi halaman manual adalah untuk kompatibilitas rpmquery, tidak melakukan apa-apa.
-qa
sebenarnya 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-pkgs
hanyalah alias dari repository-packages
.
Dari man
halaman:
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 repoquery
dari paket yum-utils
adalah 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 installed
dapat 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
epel
Output 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 Vendor
tajuk 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 Vendor
header 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.