linux - rpm 条件依赖要求

标签 linux rpm rpmbuild

我现在正在开发一个软件,需要在较新版本的 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

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

关于linux - rpm 条件依赖要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60605891/

相关文章:

linux权限更新不快

linux - 在 Linux RPM 安装/升级期间设置错误状态

linux - 百胜错误 : dbiOpen: dbapi 1 not available

linux - 为什么 Linux rpm 是特定于操作系统的

linux - rpmbuild:如何在没有 %install 的情况下构建包?

centos - rpmbuild 没有那个文件或目录

linux - 从文件中的一组字符串中替换一个字符串 - SED

Linux 使用 grep 命令

linux - shell 脚本 1 : [: [: unexpected operator

centos - 如何在打包 RPM 的同时添加要安装的必备包与 RPM 安装