为什么RPM认为版本1.03ii> 1.1?

jav*_*nix 1 python packaging rpm yum

我正在尝试1.03ii-1使用最新版本的软件包升级以前版本的RPM 1.1-1.

百胜,出于某种原因,认为1.03ii-1较新的1.1-1.既不封装具有一个划时代,并且rpm.labelCompare(('1', '1.03ii', '1'), ('1','1.1','1')) 在python也意味着1.03ii-11.1-1.

为什么是这样?是以ii某种方式评估为数字?字母数字版本是否被视为高于数字版本?

Geo*_*edy 8

来自http://rpm5.org/docs/api/dependencies.html,强调我的

RPM用于确定包的版本顺序的算法很简单,鼓励开发人员不要依赖其工作的细节.开发人员应保持其编号方案简单,以便任何合理的排序算法都能正常工作.版本比较算法在例程rpmvercmp()中,它只是一个分段的strcmp(3).首先,使用isdigit(3)/ isalpha(3)找到段的边界.然后按顺序比较每个段,最右边的段是最不重要的.使用词汇图形ascii排序比较字母部分,数字段剥离前导零并在执行strcmp之前比较strlen.如果两个数字字符串相等,则较长的字符串较大.请注意,算法不知道小数部分,并且perl-5.6比perl-5.00503"更旧",因为数字6小于数字503.

在这种情况下,版本将转换为元组(1,3,'ii')和(1,1).第一个元素是相等的,所以第二个元素与3> 1比较,因此1.03ii被认为比1.1更新