我正在开发一款需要在较新版本的Redhat上运行的软件。它目前在6和7上可以正常工作,但现在需要在Redhat 8上安装并运行。
该软件中没有什么真正阻止它停止在较新的OS版本上运行的软件,但是我对依赖要求有疑问。运行该软件的脚本需要访问管理(/ usr / sbin / semanage)。在Redhat 6和7上,这是由policycoreutils-python软件包提供的,并在构建rpm时作为要求参数提供。从Redhat 8开始,该软件包已重命名为policycoreutils-python-utils(请参阅此link,第8.6.2节)。
从rpm 4.13开始,支持布尔依赖关系(请参阅here),这将使其很容易解决,因为我可以像-R (policycoreutils-python or policycoreutils-python-utils)
那样做,但是从当前4.8版本更改rpm-build包是一个主要问题痛苦,因为另一个团队使用它来开发另一个软件。我还需要保持它与发行版无关的rpm,因此对于较新版本的OS,不能有不同版本的rpm。
所以,我的问题:
1)在具有较旧rpm 4.8版本的spec文件中,还有其他方法可以有条件要求吗?
2)如果要获得批准将rpm升级到最新的4.15,则在安装了较旧rpm的目标系统上可能会出现任何问题,例如不了解条件吗?
更新:rpm将在RH 6盒上构建一次,并且应在RH 7和8上运行。
您可以依赖semanage
本身:
Requires: /usr/sbin/semanage
[yum
,dnf
或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