一个 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,那么宏 ifarch
和 ifnarch
将匹配该架构而不是您真正的构建机器架构。
我正在修改 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,那么宏 ifarch
和 ifnarch
将匹配该架构而不是您真正的构建机器架构。