我正在使用Vagrant和VirtualBox为我们的产品设置可重现的构建环境。我们的目标是RHEL7,Oracle7和Ubuntu 14.我已经阅读了一些RPM构建指南,但有一点我不清楚。以RHEL6为例,假设我在RHEL 6.4上构建rpm,但希望确保与6.0及更高版本的兼容性。生成的RPM是否与整个RHEL 6系列兼容,还是需要在6.0上构建以确保?
基本上我正在尝试决定是否应该让Vagrant将系统更新到rpm构建环境中的最新次要版本和软件包。
答案 0 :(得分:1)
通常是的,只要您只依赖于公共接口。确定公共接口是什么,并不是那么容易。
来自Red Hat Enterprise Linux: Application Compatibility GUIDE
在主要版本的生命周期中,Red Hat在商业上发布 合理努力维护核心的二进制兼容性 所有次要版本和勘误表中的运行时环境。
这是你看起来最好的保证。修改:另请参阅Red Hat Enterprise Linux Application Compatibility Policies
在RHEL 5.x和6.x期间,我们构建了许多项目,其二进制文件在较旧的次要版本上运行, 我没有看到任何问题。 (虽然这些应用程序的二进制接口很少,但仅限于libc / libstdc ++和其他3-4个库 - 以及一些python程序)
(作为旁注,如果您正在构建内核模块,则内核不提供ABI保证,并且可能会在次要版本之间进行更改。)
答案 1 :(得分:0)
我总是在假设兼容性保证是从系列中的任何地方到系列中的任何地方的情况下进行操作,但我已经看到至少有一个被破坏的实例(我不知道这是偶然的还是不过)。
因此,为了安全起见,我可能会建议使用您正式支持的系列中最早的版本。