【问题标题】:How to check for RedHat (RHEL) minor version in rpm spec file?如何在 rpm 规范文件中检查 RedHat (RHEL) 次要版本?
【发布时间】: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 的 RPM compat_libyourlib 可能与 7.x 上的相同。

标签: rpmbuild rpm-spec


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    相关资源
    最近更新 更多