如何在 rpm 规范中将 Requires 链接到 BuildRequires?

如何在 rpm 规范中将 Requires 链接到 BuildRequires?

假设我有这样的Requires条目:

Requires: a
Requires: b
Requires: c

现在我想声明的是:

BuildRequires: <<Requires>>

这意味着,对于构建,我需要安装所需的一切。因此,如果我在第一部分中删除或添加某些内容,我将不必再编辑第二部分,因为它将被“链接”。

问题是——如何表达这种依赖?

我知道这样的方案不适用于公共套餐,但我要求家庭使用——我只为我和我的家人准备快速套餐,它们不分发。

答案1

简单的答案是定义一个宏,将其替换到这两个位置。

%define my_common_requires package-1, package-2, package-3

BuildRequires: %{my_common_requires}
Requires:      %{my_common_requires}

这还允许您手动定义需要位于两行之一但不能同时出现在两行中的内容。

答案2

看起来

BuildRequires:  %{requires}

“正常工作”——至少在 RHEL6 上,其中 RPM 版本为 4.8.0

答案3

  1. P是您的包裹的名称;
  2. R1, R2, ...,Rn是其要求
  3. RB1, RB2, ...,RBm是其 BuildRequires 中的一些,而R1, R2, ...,Rn是其他 Requires 。

现在你可以

  1. PA创建一个包含 Requires R1R2、 ...的包,Rn否则该包为空。
  2. 编辑P,使其 Requires 为PA,其 BuildRequires 为PA, RB1, RB2, ...,RBm

我不相信这是一个好主意。

MyUsefulPackage
Requires: gcc
BuildRequires: gcc

变成

MyUsefulPackage
Requires: MyUsefulRequires
BuildRequires: MyUsefulRequires

MyUsefulRequires
Requires: gcc

如果我想添加另一个包make,那么它会变成: MyUsefulPackage Requires: MyUsefulRequires BuildRequires: MyUsefulRequires

MyUsefulRequires
Requires: gcc
Requires: make

无需更改 MyUsefulPackage 的依赖要求。我只需对 MyUsefulRequires 进行一项更改即可。

相关内容