RPM包中的几个组

时间:2011-01-07 17:31:11

标签: linux packages packaging rpm rpmbuild

单个rpm包是否可以属于多个组?

在spec文件中,您可以设置包组:

  

组:系统环境/基础

我需要的是能够为这个包设置几个组(如System|Util|MyCompanyName) - 它们就像分配给包的标签一样。

安装软件包后,我想查询它

rpm -q --group System

rpm -q --group MyCompanyName

在这两种情况下,我都应该看到我的包裹(以及属于这个群体的其他人)

<小时/> 修改

许多软件包可能属于MyCompanyName组,但只能安装少数软件包。我需要一种方法来区分我们的软件包和Linux系统软件包 - 我计划使用组名


我尝试了几条Group:行,但它只使用了最后一行。 Group:之后的所有内容似乎都被视为一个字符串,我找不到分割它们的方法。

我能想到的另一个解决方案是将这些内容设为PROVIDES,然后再查询

rpm -q --whatprovides System

但我不喜欢这样。

还有其他方法可以完成所要求的功能吗?

3 个答案:

答案 0 :(得分:6)

指定公司名称的正确方法是通过Vendor标记,如下所示:

Vendor: Yoyodyne, Inc.

要按供应商获取软件包列表,您可以运行以下命令:

rpm -qa --qf '%{NAME} %{VENDOR}\n' | grep -v Yoyodyne

RPM只能属于一个组。此外,允许组由分布定义。例如,以下是Mandriva的有效组列表:

http://wiki.mandriva.com/en/Development/Packaging/Groups

要查找特定发行版的有效组,您必须经常运行该发行版的包管理器并查看列表。

RPM与Debian包格式的定义差不多。似乎没有官方或全面的文件。

http://www.rpm.org/max-rpm/s1-rpm-inside-tags.html

答案 1 :(得分:3)

AFAIU,RPM应属于RPM的GROUPS文件中的单个组,或者未指定组。不能有多个。

答案 2 :(得分:2)

您可以使用yum groups在repo级别而不是包级别定义组。一旦定义了组,您应该能够使用'yum groupinfo'命令查看每个组中的包。