我想将软件打包以便于公司内部部署,但我不知道该分配哪个版本字符串。我读过这个解释关于它的工作原理。但是,我仍然不是 100% 确定。假设我想直接从源代码为 Ubuntu 16.04.1 构建自己的 fail2ban 0.10.3.1 版本。所以我的软件包不会基于任何 Debian 版本。这是否意味着我必须将修订版设置为 0 并添加ubuntuY
(Y
这是我自己版本的第 Y 个修订版)?
有时我会看到软件包末尾带有 Ubuntu 版本,例如ubuntu16.04.1
。什么时候这样做才有意义?
最后一件事:如果我查看 Ondřej Surýs PHP PPA,版本号看起来真的很疯狂,例如5.6.37-1+ubuntu16.04.1+deb.sury.org+1
。加号后面的这些是什么意思?
答案1
您可以使用任何您喜欢的字母数字字符串来实现您的目标。您不限于特定的字符串。
该字符串的目的Ubuntu0
只是为了明确软件包的来源 - 它是 Ubuntu 特定的重建版本(通常由于补丁而产生),而不是新的上游版本。请注意, 只是Ubuntu0
一个字母数字字符串,而不是一个神奇的咒语。它高于Uakari
和低于Uckerland
。
例如:如果您希望下次安全升级时覆盖您的自定义包,请将版本号设置得较低:fail2ban 0.10.3.1~A-Franks-Custom-Build-2018Sep
由于 ~A 高于零,它将取代当前的 18.04 Ubuntu 软件包。但是,未来潜在的 Ubuntu 安全或错误修复版本 ~Ubuntu0 高于 ~A,并将取代您的自定义软件包。
例如: 如果你不希望你的软件包被安全升级覆盖,但是做希望它在下一次发布升级时被覆盖,则将版本号设置得更高:fail2ban 0.10.3.1~X-Franks-Custom-Build-2018Sep
。~X 高于 ~U,因此 Ubuntu 更新不会取代它。但下一个上游版本 0.10.4 将取代您的自定义软件包。
如果您不希望任何软件包取代您的自定义软件包,那么请使用 apt-pinning 或 apt-marking 或 Snaps,而不是弄乱版本字符串。