rpm条件依赖性要求

问题描述 投票:0回答:1

我正在开发一款需要在较新版本的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上运行。

linux rpm rpmbuild
1个回答
0
投票

如果您为所有平台构建一个rpm

您可以依赖semanage本身:

Requires: /usr/sbin/semanage

[yumdnfrpm应该足够聪明才能解决。

如果您在相应目标上建立每个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
© www.soinside.com 2019 - 2024. All rights reserved.