2016-04-21 34 views
0

我的包RPM说明文件看起来是这样的 -如何在rpm spec文件中指定最低版本的openssl的要求?

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

我有一个RHEL系统中OpenSSL的版本是这样的 - 将[Ag @ rhel1]#OpenSSL的 的OpenSSL>版本 OpenSSL的1.0.1e- FIPS 2013年2月11日

[[email protected]]# rpm -q --whatprovides openssl 
    openssl-1.0.1e-51.el7_2.4.x86_64 

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

回答

2

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

但是OpenSSL的具有划时代设置为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 
0

我Opensuse13.1-32bit,OpenSSL的没有划时代。不能保证rpm能找出哪个版本号比另一个更新。在Maximum Rpm documentation他们说:

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

所以有可能是转只是无法破译其中之一是1.0.2g和1.0.1e

+1

你总是可以尝试'rpmdev-vercmp'看到的结果之间新。是的,不同的操作系统可以有不同的时代或版本。因此开发人员可能希望使用'%if 0%{rhel}'和类似的条件。 – msuchy

+0

@msuchy tx提示rpmdevtools;我甚至不知道它们存在,现在我正在用rpm工作大约2年...我会看看它们。顺便说一句,你已经得到我的赞同了:) –

相关问题