我的deb版本不是Debian原生版本是否重要?

问题描述 投票:1回答:1

为了部署服务器软件,我们使用.deb文件,这些文件是通过标准Debian打包脚本创建的。

我们正在更改版本号。他们是1.$SHA,例如1.b07be5a5;现在他们更加节俭,例如2.52.1+e0ce8a812.53.0-pre+0cdb5e4.dirty

这将导致警告:

以前的软件包版本是Debian原生的,而新版本不是

这是什么意思?我们应该在乎吗?

deb
1个回答
1
投票

是,您应该注意。

如果您的软件包 Debian本机的(即,您是为Debian构建的,并且软件包的版本号也是每个发行版的版本号),那么您应该遵循保留此版本的版本编号方案。

如果您的软件包是not Debian本地软件包,则应对其进行相应编号。

Debian软件包版本号具有常规格式

(epoch:)upstreamversion-packageversion(...fluff)

其中破折号很重要(历元和结尾的东西是可选的;因此1-2表示上游版本12表示这是该上游版本的第二个Debian软件包。

您的软件包版本控制方案中,您显然在其他地方使用了破折号,但与此方案不兼容,因此需要以一种或另一种方式进行更改以避免发生意外。具体来说,如果-pre之后的字符串是随机散列,则可能会出现以下情况:dpkg将较旧的散列视为较新的散列,因为1-pre+012new在数值上小于1-pre+987old

具体建议是在哈希之前嵌入易于理解的日期和索引号,这样您就可以避免这种情况。然后,2.52.1-20191211.01~e0ce8a812.53.0-20191211.01pre+0cdb5e4.dirty包含您想要的信息,但是如果在同一天发布的诸如2.52.1-20191211.02~adeadbeef2.53.0-20191211.02pre+000000之类的程序包具有比同一天前一个程序包的哈希值低的哈希值,则它们仍然可以正确排序。

如果您的示例大致上是说明性的,则纪元前缀不是强制性的,但添加它对于消费者来说是一个好信号,即这些版本号遵循与前一个纪元不同的约定。 (当您将编号方案从11、12、13切换到1.0.15时,您确实必须在前面添加一个纪元号,从而改为1:1.0.15。)如果您未放置明确的纪元号,则意味着时期数为零。因此,要重复前面的示例,并在其前面添加一个纪元1,您将得到1:2.52.1-20191211.01~e0ce8a811:2.53.0-20191211.01pre+0cdb5e4.dirty

建议的约定将semver软件包的版本保留为“上游”,而将单个软件包的版本保留为“ Debian版本”。如果您想保留Debian本地语言,则可以省略破折号或将其替换为其他字符(即,没有上游,并且Debian软件包的版本为权威版本号)。

[Debian Policy, Section 5.6.12 Version中记录了Debian版本编号系统的详细信息

© www.soinside.com 2019 - 2024. All rights reserved.