特定のレポジトリ(例: "epel")からシステムにインストールされているすべてのRPMパッケージのリストを取得するにはどうすればよいですか?
特定のレポジトリ(例: "epel")からシステムにインストールされているすべてのRPMパッケージのリストを取得するにはどうすればよいですか?
回答:
yum list installed | grep @epel
dnf list installed | grep @epel
このstackoverflowの回答で示唆されているように、RHEL6の時点で、これを行うためのより徹底的な方法がありyumdb
ます:
yumdb search from_repo REPOID*
レポイドはワイルドカードを取ります。
出力をチートしてパイプする場合、プリティプリント効果も実現できます。ここに使用するものがありますawk
yumdb search from_repo REPOID* |awk -F"\n" '{ RS=""; print $1 }'
egrep
またはを使用してgrep -e
yumdb search from_repo REPOID* |egrep -v '(from_repo|^$)'
指定されたリポジトリで利用可能なすべてのパッケージをリストするには、次のようにします。
repoquery -a --repoid=REPONAME
repoquery -qa --repoid=REPONAME
repoquery -a --repoid=REPONAME
マニュアルページの-q
オプションによるとrpmquery互換性のためであり、何もしない
-qa
実際には失敗します。私が原因以前upvoteを取り除くにコメントをupvoteすることはできません:(私はそれを反映して答えを更新しています。
yumの出力を取得するのが最も明白な方法です。
yum list installed | grep @epel
ただし、追加のパッケージプロパティを表示することはできず、スクリプトで解析することは困難です。ツールrepoquery
パッケージからはyum-utils
ツールですが、それはデフォルトではインストールされません。
repoquery -a --installed --qf "%{ui_from_repo} %{name}" | grep '^@epel'
より複雑な例:
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
は、と同じ情報をyumdb search from_repo <repoid>
異なる形式で取得するために使用できます。
# 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
出力:
# 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
Vendor
インストールされているrpm のヘッダーを確認できます。
この例では、VideoLANリポジトリのすべてのパッケージをリストします。
rpm -q -a --qf "%{Name}:%{Vendor}\n" \
| grep -F ":VideoLAN Project (http://www.videolan.org)"
明らかに、Vendor
リポジトリのヘッダーが異なるリポジトリ間で一意であるかどうかを判断する必要があります。
不足しているリポジトリを見つけたいだけの場合:
yum list installed | awk '{print $3}' | sort | uniq
これにより、パッケージがインストールされているすべてのリポジトリが返されます。