配置基于 MacOS 的 rpmbuild 以提供独立于平台的 RPM

配置基于 MacOS 的 rpmbuild 以提供独立于平台的 RPM

我需要在 MacOS 上为 Java 软件包构建 RPM。我使用的是自制程序中的 rpmbuild,版本 4.14.2.1。工具链设置正确,最后我得到了有效的 RPM。只有一个障碍:RPM 的目标操作系统字符串为“darwin”,因为它是在那里构建的,并且尝试在普通 Linux(想想 CentOS)上安装它会失败并显示以下消息

Transaction check error:
  package myrpm.noarch is intended for a different operating system

事实上,查询 RPM 证实了原因:

# rpm -qp --qf '%{os}\n' myrpm.noarch.rpm
darwin

为了不更改我的源代码树,我想将必要的属性放在本地.rpmrc文件中。

我需要如何设置才能最终获得真正独立于平台的 RPM?

为了澄清这一点:rpm 包含可在任何具有 Java 8 JRE 和类似 POSIX 文件系统的系统上运行的软件和路径。它至少应该可以安装在 darwin/MacOS 和 Redhat/CentOS/SuSE 宇宙上。

答案1

构建 noarch RPM 的方法实际上是修改 spec 文件以包含以下指令:

BuildArch: noarch

我不确定您是否可以在配置文件(例如 )中配置相同的内容.rpmrc,但无论如何,这样做可能是一个坏主意,因为它会阻止您的 rpmbuild 安装构建实际特定于架构的软件包,即使您不这样做如果您自己不需要它们,那么此时它仍然是一个“损坏的”(或者可能不兼容/不完整)的 rpmbuild 设置。

如果您确实有权访问规范文件(以您的包命名的文件,带有.spec扩展名),请考虑使用该指令更新它以正确构建 noarch 包BuildArch: noarch,在这种情况下,无论它在哪里构建,它都可以正常工作,无需对本地 rpmbuild 配置进行任何修改。

答案2

区分大小写

buildostranslate: Darwin: Linux

在此输入图像描述

相关内容