【问题标题】:One SPEC file to support multiple architectures一个支持多种架构的 SPEC 文件
【发布时间】:2019-04-08 17:48:14
【问题描述】:

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

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

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

【问题讨论】:

    标签: rpm rpm-spec


    【解决方案1】:

    您是否碰巧在您的规范文件中也使用了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
    

    生成了一个依赖于 package-x-y-z 的包。

    结论

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

    【讨论】:

    • BuildArch: noarch 确实是罪魁祸首。删除它,%ifnarch 工作顺利。
    猜你喜欢
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多