【问题标题】:How do i specify a requirement for a minimum version of openssl in rpm spec file?如何在 rpm 规范文件中指定最低版本的 openssl 要求?
【发布时间】:2016-08-14 02:16:14
【问题描述】:

我的包的 rpm 规范文件如下所示:

    Requires:mysql-server >= 5.5.30, java >= 1.6, p7zip, openssl >= 1.0.2g

我有一个 RHEL 系统,其中的 OpenSSL 版本是这样的:

    [ag@rhel1]# openssl
    OpenSSL> version
    OpenSSL 1.0.1e-fips 11 Feb 2013

    [ag@rhel1]# rpm -q --whatprovides openssl
    openssl-1.0.1e-51.el7_2.4.x86_64

当我尝试测试我的 rpm 包的安装时,它应该会失败,因为我的包至少需要 1.0.2g 而安装了 1.0.1e。但是,安装成功,没有任何问题。我在这里错过了什么?

【问题讨论】:

    标签: linux openssl rpm rhel rpm-spec


    【解决方案1】:

    比较值的syntax 是:[epoch:]version[-release]。如果不存在纪元,则假定为 0。

    但 OpenSSL 已将 epoch 设置为 1。请参阅 rpm -qi openssl:

    Name        : openssl
    Epoch       : 1
    Version     : 1.0.2g
    ...
    

    当然还有 1:0.0.0 > 0:9999.9999.99999。

    所以这应该有效:

    Requires: openssl >= 1:1.0.2g
    

    【讨论】:

      【解决方案2】:

      在我的 Opensuse13.1-32bit 上,OpenSSL 没有 epoch。不能保证 rpm 可以确定哪个版本号比另一个版本号更新。在Maximum Rpm documentation 他们说:

      确定版本 1.5 早于版本 1.6 非常简单。但是 2.01 和 2.1 呢?还是 7.6a 和 7.6? RPM 无法跟上正在使用的所有不同版本编号方案。

      因此,rpm 可能无法破译 1.0.2g1.0.1e 之间的哪个更新

      【讨论】:

      • 您可以随时尝试rpmdev-vercmp 来查看结果。是的,不同的操作系统可以有不同的时代或版本。所以开发者可能想使用%if 0%{rhel} 和类似的条件。
      • @msuchy tx 获取有关 rpmdevtools 的提示;我什至不知道它们的存在,而且我已经使用 rpm 大约 2 年了......我会看看它们。顺便提一句;你已经有我的支持了:)
      猜你喜欢
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      • 2016-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      相关资源
      最近更新 更多