需要区分RHEL 7.2 / 7.3 v / s RHEL 7.4及更高版本之间的软件包依赖性。在rpm规范文件中有rhel
宏,但对于所有RHEL 7.x,所有RHEL 6.x版本的评估结果为7。
我可以阅读/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次要版本来区分依赖关系,而无需为RHEL 7.2 / 7.3 v / s RHEL 7.4+提供不同的el7软件包,这不是一个选项......