【问题标题】:Several groups in RPM packageRPM包中的几个组
【发布时间】:2011-06-05 10:21:24
【问题描述】:

单个rpm包可以分属于多个组吗?

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

组:系统环境/基础

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

安装包后我想像这样查询它

rpm -q --group System

rpm -q --group MyCompanyName

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


编辑:

许多包可能属于 MyCompanyName 组,但可能安装的只有少数。我需要一种方法来区分我们的包和 linux 系统包 - 我打算使用组名来做到这一点


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

我能想到的另一个解决方案是将这些东西作为PROVIDES 然后进行查询

rpm -q --whatprovides System

但我不喜欢这样。

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

【问题讨论】:

    标签: linux packages packaging rpm rpmbuild


    【解决方案1】:

    这是一篇旧帖子,但它仍然出现在 Google 上;

    现在至少 OpenSUSE 使用 Group: 字段作为空格分隔的标签字段而不是层次树,因此对于 SUSE 包,您可以简单地用空格分隔您希望包所属的标签。

    详情请见:https://en.opensuse.org/openSUSE:Package_group_guidelines

    【讨论】:

      【解决方案2】:

      指定公司名称的正确方法是通过 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

      【讨论】:

      • 是的,它适用于公司名称,虽然rpm没有方便的方式通过这个参数查询
      • 因为您的解决方案是我唯一可以使用的解决方案,所以我选择它作为答案
      【解决方案3】:

      您也许可以使用yum groups 在存储库级别而不是包级别定义组。定义好组后,您应该可以使用“yum groupinfo”命令查看每个组中的包。

      【讨论】:

      • 不幸的是,它不能帮助您查看系统上安装了给定组中的哪些可选包,所以当您有必须安装所有包的静态组时,它最方便
      【解决方案4】:

      AFAIU,RPM 应属于 RPM 的 GROUPS 文件中的单个组或未指定组。不能超过一个。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-12
        • 2015-08-26
        相关资源
        最近更新 更多