如何使 debian 软件包只能通过指定版本来安装

如何使 debian 软件包只能通过指定版本来安装

我希望我的 CI/CD 能够为每次提交自动构建我的包的 .deb,例如包含提交哈希的版本(例如 my-package-662b98b),因此我们只需指定版本即可安装特定版本安装。

但是,我不知道如何将它们与常规版本分开。例如,版本 3.1 将覆盖版本 2abdc4a,或者相反,提交 924af32 将覆盖 3.1。

例如在控制或更改日志文件中是否有一个字段表明软件包的版本是实验性的,不应安装来代替常规版本?

答案1

这有两个方面。

第一个是版本编号。由于您希望版本保持顺序,因此需要包含版本和哈希值。为了确保版本正确排序,通常通过在哈希之前附加构建日期来完成,如果每天可以有多个构建,则在两者之间添加快照编号(请参阅例如 Debian Go 打包政策)。在你的情况下,你会有类似的版本

  • 最新版本为 3.1
  • 3.1+git20220725.1.2abdc4a 用于对应于哈希 2abdc4a 的构建(假设这是今天的第一个哈希)
  • 3.1+git20220725.2.924af32 用于对应于哈希值 924af32 的构建(假设这是今天的第二个哈希值)

二是分离发布包和快照包。为了解决这个问题,您需要拆分存储库,或者更确切地说,您需要为发布包托管一个“套件”,为快照/实验包托管另一个“套件”。看Debian的实验Release文件举个后者的例子;设置“NotAutomatic: yes”可确保软件包无法自动安装或用作升级。

相关内容