【发布时间】:2019-08-03 12:47:25
【问题描述】:
需要区分 RHEL 7.2/7.3 与 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 包的系统上进行评估。所以没用。
【问题讨论】:
-
我认为这是不可能的。通常它通过请求您需要的 功能 来工作,该功能由一个 7.x 版本的一个 RPM 和 7.y 版本的另一个 RPM 提供。这是使用规范文件中的
Provides设置的,例如 7.y 的 RPMcompat_libyourlib可能与 7.x 上的相同。