2014-01-21 67 views
2

有没有办法问问哪个组包含给定的包?我知道如何问一个给定组中的软件包,并且可以编写一个快速脚本来浏览所有组,但是拥有比这更简单的机制会更好。哪个yum组包含给定的包?

回答

6

如果你只是在寻找由人来使用的“简单的机制”,并不需要某种脚本或这样的,你可能会与这一个获得由:

yum groupinfo '*' | less +/sendmail-cf 

当然,更换sendmail-cf与您感兴趣的包名称。

+0

谢谢,是的,只是人类可用是我正在寻找,所以这符合法案! –

0

我不知道yum,但请记住它位于rpm之上。您正在寻找的rpm命令是:

rpm -q --qf %{group} yourRPM 

你可能想在最后加一个\n,这取决于你是高达:

[[email protected] ~]# rpm -q --qf %{group} setarch 
System Environment/Kernel[[email protected] ~]# rpm -q --qf "%{group}\n" setarch 
System Environment/Kernel 
[[email protected] ~]# 
+1

有趣的想法,但它不会返回与'yum grouplist'给出的任何内容相匹配的群组名称。 –

+0

抱歉,错误的“群组”! –

3

你可以找到一个组到指定的软件包属于,通过使用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