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


回答:


45

CentOS / RHEL / Fedora 22以前

yum list installed | grep @epel

Fedora 23以降

dnf list installed | grep @epel

8
これは機能しません。Yumは、長すぎると壊れるラインをパイプに出力します。そのため、grepの入力はほとんどの場合パッケージごとに1行ですが、2行になることもあります。Yumは「whizbanger.x86_64 ___ 3.8.4-2.el6 _______________ @epel」を渡すことができます。(アンダースコアをスペースとして想像してください。)「@epel」は、grepが見る入力の次の行にあります。そのため、grepはその行を「@epel」のみで出力しますが、パッケージ名の前の行は出力しません。
トッドウォルトン

bugzilla.redhat.com/show_bug.cgi?id=1525645が修正されるまで、これらのコマンドをルートとして実行する必要がある場合があります。
proski

リポジトリに問題がある場合、yumコマンドは機能しないようです。問題のあるレポを無効にするかどうかを確認するには、このリストが必要でした。
ジェイエン

@ToddワトソンIのノウハウ「... yumの輸出COLUMNS = 999」、それはハックですが、何について
マッシモ

@Massimo、それは動作しますか?それはいい回避策でしょう。また、私はこのUnixのStackExchangeの質問を見つけました:unix.stackexchange.com/questions/308731/...
トッド・ウォルトン

17

この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|^$)'

list_ALL_AVAILABLE_from_repo

指定されたリポジトリで利用可能なすべてのパッケージをリストするには、次のようにします

repoquery -a --repoid=REPONAME

補足:指定されたレポからすべてのパッケージをリストするには、次のようにしますrepoquery -qa --repoid=REPONAME
ILMostro_7 14

2
これも素晴らしい答えです。出力は受け入れられた回答よりも長いですが、より良い方法でフォーマットされています。
ルーチネーター

repoquery -a --repoid=REPONAMEマニュアルページの-qオプションによるとrpmquery互換性のためであり、何もしない
Rockallite

@Rockalliteは正しいです。dnfの場合、-qa実際には失敗します。私が原因以前upvoteを取り除くにコメントをupvoteすることはできません:(私はそれを反映して答えを更新しています。
ILMostro_7

11
dnf repo-pkgs <repoid> list installed

ノート

上記のコマンドは、DNFを使用して、からインストールされたパッケージをリストします<repoid>。注repo-pkgsはのエイリアスですrepository-packages

manページから:

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

参考文献:

man dnf

3

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'

2

RHEL Server 7.5(マイポ)

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

1

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

この例では、VideoLANリポジトリのすべてのパッケージをリストします。

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

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


3
ベンダーとリポジトリの間には1対1のマッピングはなく、場合によっては、ベンダーストリングが空白になります。
ロリンホッホシュタイン

1

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.