地下城与勇士.如何查找属于哪个组包?

地下城与勇士.如何查找属于哪个组包?

我使用的是 fedora 22 和 dnf-1.1.2-4.fc22.noarch

作为一个用例场景:我发现 strace 包没有安装。我想弄清楚这个软件包是否属于任何其他组,以安装我可能也需要完成类似任务的软件。

我发现了这种蛮力方式(grepping 3个空格,因为组名以此缩进开头):

dnf grouplist | grep '   ' | while read line; do dnf groupinfo "$line"; done

然后将此输出重定向到文件,搜索包名称,并在那里找到组名称。

答案1

自 Fedora 26 起,以下内容有效:

dnf repoquery --groupmember <pkg-name>

请参阅错误报告实现此功能的地方。

答案2

这是一个似乎在我的 fedora 21 中工作的示例,但 dnf 仍在变化,所以尝试一下看看:

$ pkg=fvwm
$ dnf groupinfo '*' | sed -n '/Group:/h;/'"$pkg"'/{x;p;x;p}'
Group: Window Managers
   fvwm

保存sed(h) 每个组标题,然后当包匹配时交换保存和模式 (x),打印标题 (p),交换回来并打印包。

答案3

另一种使用方法awk

包裹strace

pkg="strace"; dnf groupinfo '*' | awk -F": " '/^Group/ {group=$2} /'"$pkg"'/ {print group}'  

输出显示:

Security Lab
C Development Tools and Libraries

包裹fvwm

pkg="fvwm"; dnf groupinfo '*' | awk -F": " '/^Group/ {group=$2} /'"$pkg"'/ {print group}'  

输出显示:

Window Managers

答案4

作为替代方案,我们可以列出所有组及其包

# save the result to /tmp/all-group-packages
dnf group list | sed -n 's/   //p' | sed -E "s/(.*)/'\0'/" | xargs dnf group info >/tmp/all-group-packages

相关内容