本地自定义软件包的 Debian 软件包的版本编号

本地自定义软件包的 Debian 软件包的版本编号

我想构建并打包一个特定的 Go 程序。与我从上游获得的版本相比,Ubuntu 18.04 和 Debian 9.5(实际上是 PVE 5.2)提供的所述程序的打包版本都相当旧。

正确获取我的构建的依赖关系不是问题,构建 Debian 软件包也不是问题(曾经在那里做过)。

我需要知道的是如何为我的包分配一个版本 - 它不会发布给其他任何人 - 这样应该如果软件包维护者发布了比我的软件包更新的版本,它将被安装并替换我自己的软件包(其中一种情况可能是 Ubuntu 的do-release-upgrade)。

有没有某种方法可以以这种方式“标记”包而不破坏内部版本比较(dpkg --compare-versions)?

我知道向后移植通常包含bpo在包名称中(或者是版本?),但是很难找到所有类似“标签”的完整列表,所以我想也许已经有一种方法可以实现这一点并且避免冲突。所以主要目标是遵守规则,同时获得我能得到的最新版本。

答案1

由于您正在打包新的上游版本,我会推荐以下形式的版本

1.0-0~c0000022l+1

其中 1.0 是上游版本。这里的想法如下:

  • 0 低于任何官方 Debian 软件包的版本;例如,它在 Ubuntu 软件包中使用,该软件包提供比 Debian 更新的上游版本(您将0ubuntu在此处看到);
  • ~ 确保版本无论如何都会低于任何 -0 修订版(请参阅Debian 政策了解详情);
  • c0000022l 是一些特定的后缀,用于将修订版标记为您的修订版(类似于bpo向后移植、debDebian 稳定更新...);
  • +1 为您的包装提供了未来更新的空间。

如果您随后需要提供仅包含包装修复的更新包,那么您将获得+1。如果您打包较新的上游版本,则可以适当地提高上游版本并再次从 +1 开始。

如果相同的上游或较新的上游最终“正式”打包,它将是您本地版本的有效升级候选者:如果它是 Ubuntu 软件包,1.0-0ubuntu...将排序在 1.0-0~ 之后,如果是 Debian 软件包,1.0-1 将排在 1.0-0 之后。

相关内容