【发布时间】:2014-01-21 11:56:48
【问题描述】:
有没有办法询问 yum 哪些组包含给定的包?我知道如何询问给定组中有哪些包,并且可以编写一个快速脚本来搜索所有组,但最好有一个比这更简单的机制。
【问题讨论】:
有没有办法询问 yum 哪些组包含给定的包?我知道如何询问给定组中有哪些包,并且可以编写一个快速脚本来搜索所有组,但最好有一个比这更简单的机制。
【问题讨论】:
如果您只是在寻找一种可供人类使用的“更简单的机制”,并且不需要在某种脚本中使用它,那么您可能会得到这个:
yum groupinfo '*' | less +/sendmail-cf
当然,把sendmail-cf替换成你感兴趣的包名。
【讨论】:
你可以通过yum-list-data插件找到指定包所属的组。
$ sudo yum -y install yum-plugin-list-data
$ yum -C list-groups ftp
Loaded plugins: fastestmirror, list-data
==================== Available Packages ====================
Console internet tools 1 (100%)
list-groups done
或者,如果您不允许安装插件,请保存以下脚本并尝试使用一个参数运行它,即您尝试查找的包的名称:
#!/bin/sh
search_name=$1
LANG=C yum grouplist -v | grep "^ " | awk -F'(' '{print $1}' | sed -e 's/^ *//' | while read line
do
if [ "${search_name}" != "" ]; then
yum groupinfo "${line}" | grep -q "^ *${search_name}$"
if [ $? -eq 0 ]; then
echo ${line}
break
fi
fi
done
【讨论】:
我不知道yum,但请记住它位于rpm 之上。您要查找的rpm 命令是:
rpm -q --qf %{group} yourRPM
您可能希望在末尾添加\n,具体取决于您的意愿:
[root@Niflheim ~]# rpm -q --qf %{group} setarch
System Environment/Kernel[root@Niflheim ~]# rpm -q --qf "%{group}\n" setarch
System Environment/Kernel
[root@Niflheim ~]#
【讨论】: