web-dev-qa-db-ja.com

リポジトリ「X」からインストールされたすべてのRPMパッケージを一覧表示します

システムにインストールされているすべてのRPMパッケージのリストを特定のリポジトリ(「epel」など)から取得するにはどうすればよいですか?

47
Lorin Hochstein

CentOS/RHEL/Fedora 22以前

yum list installed | grep @epel

Fedora 23以降

dnf list installed | grep @epel
46
David Schwartz

RHEL6以降、 this stackoverflow answer で提案されているように、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|^$)'

list_ALL_AVAILABLE_from_repo

指定したリポジトリ内のすべてのavailableパッケージを一覧表示するには、次のようにします。

repoquery -a --repoid=REPONAME
18
ILMostro_7
dnf repo-pkgs <repoid> list installed

ノート

上記のコマンドは [〜#〜] dnf [〜#〜] を使用して、<repoid>からインストールされたパッケージを一覧表示します。注repo-pkgsrepository-packagesの単なるエイリアスです。

manページから:

man dnf | grep "repository-packages.*list.*installed" -A 1

参考文献:

man dnf
15
Peque

Yumの出力をGreppingするのが最も明白な方法です。

yum list installed | grep @epel

ただし、追加のパッケージプロパティを表示することはできず、スクリプトで解析することは困難です。パッケージyum-utilsのツールrepoqueryはツールですが、デフォルトではインストールされません。

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'
3
Franklin Piat

RHEL Server 7.5(Maipo)

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
2
alexandrul

インストールされているrpmのVendorヘッダーを確認できます。

この例では、VideoLANリポジトリからすべてのパッケージを一覧表示します。

 rpm -q -a --qf "%{Name}:%{Vendor}\n" \
     | grep -F ":VideoLAN Project (http://www.videolan.org)"

明らかに、リポジトリのVendorヘッダーが異なるリポジトリ間で一意であるかどうかを判断する必要があります。

1
andcoz

不足しているリポジトリを見つけたいだけの場合:

yum list installed | awk '{print $3}' | sort | uniq

これにより、パッケージがインストールされているすべてのリポジトリが返されます。

1