列出从 repo "X" 安装的所有 RPM 包

Lor*_*ein 62 yum fedora rpm rhel dnf

如何从特定存储库(例如,“epel”)获取已安装在我的系统上的所有 RPM 软件包的列表?

Dav*_*rtz 56

CentOS / RHEL / Fedora 22 或更早版本

yum list installed | grep @epel
Run Code Online (Sandbox Code Playgroud)

Fedora 23 或更高版本

dnf list installed | grep @epel
Run Code Online (Sandbox Code Playgroud)

  • 这是行不通的。Yum 会将行输出到管道,如果它们太长就会被破坏。所以grep的输入大多是每个包一行,但也可以是两行。百胜可以通过“whizbanger.x86_64 ___ 3.8.4-2.el6 ______________ @epel”。(将下划线想象为空格。)“@epel”位于 grep 看到的输入的下一行。所以 grep 将只输出“@epel”而不是包含包名称的前一行。 (11认同)

ILM*_*o_7 20

从 RHEL6 开始,正如在这个 stackoverflow answer 中所建议的那样,有一种更彻底的方法可以使用yumdb

yumdb search from_repo REPOID*
Run Code Online (Sandbox Code Playgroud)

repoid 需要通配符。

漂亮的印刷品

如果我们要欺骗和管道输出,那么我们也可以实现漂亮的打印效果。这是一个使用awk

yumdb search from_repo REPOID* |awk -F"\n" '{ RS=""; print $1 }'
Run Code Online (Sandbox Code Playgroud)

使用egrepgrep -e

yumdb search from_repo REPOID* |egrep -v '(from_repo|^$)'
Run Code Online (Sandbox Code Playgroud)

list_ALL_AVAILABLE_from_repo

要列出指定存储库中的所有可用,请执行以下操作:

repoquery -a --repoid=REPONAME
Run Code Online (Sandbox Code Playgroud)

  • 这也是一个很好的答案。输出比接受的答案长,但它的格式更好。 (2认同)

Peq*_*que 19

dnf repo-pkgs <repoid> list installed
Run Code Online (Sandbox Code Playgroud)

笔记

上面的命令使用DNF列出从<repoid>. Noterepo-pkgs只是 的别名repository-packages

man页面:

man dnf | grep "repository-packages.*list.*installed" -A 1
Run Code Online (Sandbox Code Playgroud)

进一步阅读:

man dnf
Run Code Online (Sandbox Code Playgroud)