如何检查 rpm 规范文件中的 RedHat (RHEL) 次要版本?

How to check for RedHat (RHEL) minor version in rpm spec file?

需要区分 RHEL 7.2/7.3 之间的软件包依赖关系 v/s RHEL 7.4 及更高版本。 rpm 规范文件中有 rhel 宏可用,但所有 RHEL 7.x 的计算结果为 7,所有 RHEL 6.x 版本的计算结果为 6。

我可以阅读 /etc/redhat-release 文件并确定 %pre 部分中的次要版本,但不清楚使用 Requires 指令指定包依赖性是否为时已晚。

我尝试定义一个读取 /etc/redhat-release 文件的宏,然后像下面这样使用宏

%define rhel_minor_version %(rhel_version_file="/etc/redhat-release";
if [ -f $rhel_version_file ]; then echo $(cat $rhel_version_file |
grep -oP '.*7\.\K([0-9]+)'); else echo 0; fi)

%if 0%{?rhel} == 7
%if 0%{?rhel_minor_version} >= 4
Requires: iperf3
%endif
%endif

然而,这个宏是在调用 rpmbuild 构建 rpm 包的系统上计算的,而不是在安装 rpm 包的系统上计算的。所以不行。

有一种机制可以指定弱依赖性,即 rpm 规范文件中的可选依赖性。这样,如果包可用,它将被安装,否则依赖项将被忽略。 https://rpm.org/user_doc/dependencies.html

“推荐”指令在 Fedora 上有效但在 RHEL 上不可用 https://bugzilla.redhat.com/show_bug.cgi?id=1427674

经过深思熟虑,我认为如果不为 RHEL 7.2/7.3 提供不同的 el7 包,就不可能根据 RHEL 次要版本区分依赖项 v/s RHEL 7.4+,这不是一个选项...