正在阅读变更日志的debian openjdk-8源码包我们看到有一个版本叫做openjdk-8 (8u45-b14-4)下一个是openjdk-8 (8u60~b22-1)。
最后一个版本中波浪号的含义是什么?
答案1
Debian 软件包版本格式的官方参考位于Debian 政策手册。该格式旨在允许“看起来合理”的版本号具有明确定义(如果有些复杂)的比较关系,以决定一个版本何时比另一个版本更新。
在大多数情况下,比较是字符串的字典顺序比较。例如,1foo
在 之前排序1ga
。然而,数字序列是按数字顺序进行比较的,因此foo10bar
排序在 后面foo9bar
。
按照字典顺序,字符串始终排在其前缀之前。波形符字符允许与此不同:始终在以 开头且后跟除 之外的字符的任何版本之前foo~bar
排序。这通常用于 beta 版本:在 之前排序。我不知道为什么 OpenJDK 8 包似乎在和后缀之间交替。foo
foo
~
8u60~b22
8u60
-b
~b
波形符后缀也用于各种向后移植。例如,如果 Debian 稳定版和测试版中存在相同版本的软件包,并且安全修复需要进入稳定版,那么稳定版中的软件包将具有与-2~deb1
测试版相同的后缀(针对更新的库进行编译)将会有-2
;这样软件包就是-1
版本的升级,但是如果系统从稳定版升级到测试版,那么-2~deb1
稳定版也会升级到-2
测试版。官方向后移植用于相同目的,这样版本将升级到(如果该版本出现在主发行版中)。~bpoNUMBER
4.2~bpo7
4.2