一个 SPEC 文件支持多种架构

One SPEC file to support multiple architectures

我正在修改 RPM 规范文件以构建 x86_64 架构。现有的 SPEC 包含一个仅适用于 32 位的包,即 Requires: package-x-y-z。如何删除 x86_64 架构的 package-x-y-z 要求 just,同时仍然要求其他 OS 使用它?

我尝试在 Requires: package x-y-z 行之前使用 %ifnarch x86_64 但没有成功。

我可以制作单独的 SPEC 文件,但理想情况下,这个 SPEC 文件将支持两种架构以实现更好的可维护性。

您是否碰巧也在您的规范文件中使用了 BuildArch

我刚刚在 x86_64 构建机器上用规范文件测试了这个

BuildArch: noarch

确实

%ifnarch x86_64
Requires: package-x-y-z
%endif

生成了一个确实需要 package-x-y-z 的包...

由于我的规范文件生成了一个 noarch 包,我尝试更改逻辑;和

%ifnarch noarch
Requires: package-x-y-z
%endif

生成的包依赖包-x-y-z。

结论

如果您使用 BuildArch,那么宏 ifarchifnarch 将匹配该架构而不是您真正的构建机器架构。