前言
我所说的构建 RPM 并不是指从源代码进行编译。我纯粹是指将一个tar
或“zip”文件与源代码或二进制文件一起重新打包为 RPM。
我已经从源代码构建 RPM 作为noarch
RPM 一段时间了。最近,我不得不构建包含二进制文件的 RPM,这引起了一些担忧:
arch
是否有确定和noarch
RPM之间因素的最佳实践?特别是在从二进制文件构建 RPM 的情况下。我知道对于没有编译并且仅在安装 RPM 时提取文件的纯源代码noarch
是可以接受的,但是如上所述,我对打包二进制文件有一些疑问。- RPM是否
arch
与不同操作系统版本兼容?(这是在上面前言的上下文中)只是为了详细说明我可以arch
在 RedHat 6 上构建 RPM,然后将其安装在 RedHat 5 中,反之亦然吗?
答案1
实际上,无论您是从源代码构建它还是打包一些预先存在的存档,这并不重要。
noarch
RPM 旨在保持体系结构中立,即它们不得包含(本机)二进制文件。
如果包由解释脚本(Bash、Python 等)、文档、标头、媒体文件等,甚至编译的 Java 类组成,那么它可以诺阿奇。相同的包可以在任何硬件架构上工作,因为它不包含专门为给定架构构建的代码。
另一方面,如果包包含编译为本机机器代码的二进制文件(例如用 C、C++、Pascal 等编写的程序),则无论它们还包含什么内容,它们都必须与体系结构绑定。一个程序编译为x86_64不能运行在个人电脑例如,主机操作系统。
至于兼容不同的操作系统版本,会因依赖关系而异,不能轻易一概而论。例如,如果一个包依赖于给定库的最低版本,那么显然不能保证它可以在具有此类库的旧版本的系统(或根本没有此类库的系统)上工作。如果它没有依赖项或非常通用的依赖项,那么它可能会起作用。
另外,严格来说,这适用于两者拱和诺阿奇包。