![如何在 rpm 规范中将 Requires 链接到 BuildRequires?](https://linux22.com/image/23262/%E5%A6%82%E4%BD%95%E5%9C%A8%20rpm%20%E8%A7%84%E8%8C%83%E4%B8%AD%E5%B0%86%20Requires%20%E9%93%BE%E6%8E%A5%E5%88%B0%20BuildRequires%EF%BC%9F.png)
假设我有这样的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
让
P
是您的包裹的名称;R1
,R2
, ...,Rn
是其要求RB1
,RB2
, ...,RBm
是其 BuildRequires 中的一些,而R1
,R2
, ...,Rn
是其他 Requires 。
现在你可以
PA
创建一个包含 RequiresR1
、R2
、 ...的包,Rn
否则该包为空。- 编辑
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 进行一项更改即可。