我现在正在开发一个软件,需要在较新版本的 Redhat 上运行。目前它在 6 和 7 上运行良好,但现在需要在 Redhat 8 上安装和运行。
软件中没有什么真正具体的内容可以阻止它在较新的操作系统版本上运行,但我在依赖性要求方面遇到了问题。运行该软件的脚本需要访问semanage (/usr/sbin/semanage)。在 Redhat 6 和 7 上,它由 policycoreutils-python 包提供,并在构建 rpm 时作为需求参数给出。从 Redhat 8 开始,该软件包已重命名为policycoreutils-python-utils(请参阅此 link,第 8.6.2 节)。
从 rpm 4.13 开始,支持 bool 依赖项(请参阅 here ),这将使这成为一个简单的修复,因为我可以执行类似 -R (policycoreutils-python 或policycoreutils-python-utils)
但是从当前的 4.8 版本更改 rpm-build 包是一个很大的痛苦,因为它被另一个团队用于另一个软件。我还需要将其保留为独立于发行版的 rpm,这样就不能为较新版本的操作系统提供不同版本的 rpm。
所以,我的问题:
1) 是否有其他方法可以在较旧的 rpm 4.8 版本的规范文件中包含条件要求?
2) 如果我获得批准将 rpm 升级到最新的 4.15,安装了较旧 rpm 的目标系统是否可能会出现任何问题,例如不明白条件?
更新:rpm 将在 RH 6 机器上构建一次,并且应该适用于 RH 7 和 8。
最佳答案
如果您为所有平台构建一个 rpm
您可以依赖semanage
本身:
Requires: /usr/sbin/semanage
yum
、dnf
或 rpm
应该足够聪明来解决这个问题。
如果您在相应的目标上构建每个 rpm:
您可以使用%rhel_version
宏,请参阅https://en.opensuse.org/openSUSE:Build_Service_cross_distribution_howto :
%if 0%{?rhel_version} < 800
Requires: policycoreutils-python
%else
Requires: policycoreutils-python-utils
%endif
关于linux - rpm 条件依赖要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60605891/