如何检查 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+,这不是一个选项...
需要区分 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+,这不是一个选项...