yum如何比较软件包版本?

9
我们有一个Web应用程序,将其封装为RPM。我们在RPM的版本字段中遇到了问题。
假设我们已经安装了foo-2.1.0.007:
007是我们的构建号码。
现在,当我们尝试安装新的rpm(foo-2.1.0.010),yum会显示“没有可更新的内容”。
当我重新制作了RPM但删除了前导零时,问题得以解决:

foo-2.1.0.7

foo-2.1.0.10

根据这个链接,版本的每个部分都作为整数进行比较,但实践表明情况并非如此。因此,我的问题是:RPM的版本比较算法是什么,为什么前导零会干扰?
1个回答

19

Yum只是请求RPM来比较它们。你可以安装rpmdevtools,并使用以下命令:

% rpmdev-vercmp foo-2.1.0.010 foo-2.1.0.007
0:foo-2.1.0.010 is newer

这就是你所期望的结果。除非你在007软件包中有一个纪元,否则我不确定为什么你会得到不同的答案。你使用的rpm版本是什么?vercmp对于你来说是什么?


我不知道为什么,但现在一切都按预期工作了,也就是说010已经安装在007的基础上了。很奇怪。 - Asaf Mesika
1
谢谢,让我明白了RPM确实认为0.901比0.92更新,但不是0.920。显然它比较的是带点的整数而不是十进制数。 - theory
架构(noarchx86_64等)似乎在Yum决定版本是否更新方面起到了一定的作用,但不影响RPM。 - kbolino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接