不完全列举:
python 中 -2$
, go 中 ^2:
, linux 中 \.arch1-1
, qt5-base 中 \+kde
起因是我想通过解析 pacman -Qu
找到由重大版本更新的包,在更新前提醒下自己,但碰到这些版本我懵了。
求解惑,谢谢大家了。
1
kkocdko 2022-01-10 14:54:39 +08:00
正确提问示范:AUR 中某些包的版本号存在后缀,有什么特殊含义?有统一的规范吗?
搜索关键词:version number suffix 帮你搜到的似乎有点沾边的答案: https://unix.stackexchange.com/questions/328276/ 大概意思就是:没有准确的规定,这些都是包发布者自己定的,用来区分打包次数(同一版本的前一个打包可能有小瑕疵),特定 fork ,配套依赖的版本等等 |
2
hronro 2022-01-10 15:05:23 +08:00
个人猜测哈,3.10.1 这种应该是软件自己的版本号,后面的 `-2` 应该是 Arch 自己构建的时候改了某些构建参数之类的第几次构建?
|
3
2i2Re2PLMaDnghL 2022-01-10 15:21:48 +08:00
这些后缀通常是下游版本或构建版本
具体的内容可能是随意指定的 ( AUR 里你还能看到 +(7 位 git commit hash) ) |
4
haoliang OP 谢谢各位。
之前没有打包的经验,补充了一些相关知识后才知道包版本的格式可以是: `epoch:version-rel`; 作为对比,我查看了 archlinux 和 fedora 的相关文档 * https://wiki.archlinux.org/title/PKGBUILD#pkgver * https://docs.fedoraproject.org/en-US/packaging-guidelines/Versioning 虽然还没找到对 `\.arch1`, `\+kde+r281` 的确切定义说明,写到这里,突然想到我可以去看看 vercmp 咋实现的 |
5
yanqiyu 2022-01-10 18:04:26 +08:00 10
正好有给发行版打包的经验(虽然不是 arch )但是这些前后缀还是很熟悉
python:3.10.1-2 这个 -2 意思就是 3.10.1 的第二次打包,第二次打包的理由可能有很多,比如改个编译选项,加个 patch 修 bug ,和它的依赖 sobump 了对应重新编译一次 go:2:1.17.6-1 `2:`是 epoch ,如果上有乱玩版本号(改了 scheme )就需要 epoch 来确保新版本被识别为新版本 linux:5.15.13.arch1-1 qt5-base: 5.15.2+kde+r281-1 这里的额外的字符串一般代表“风味”,比如 arch1 说明这是 arch 官方的打包,还有 zen-kernel 之类的会在这里做区分 +kde+r281 这里的意思是相对于 5.15.2 的 upstream 版本的 kde 下游的 281 的 commit 之后的 tarball |
6
meetcw 2022-01-10 18:44:19 +08:00 2
https://wiki.archlinux.org/title/PKGBUILD_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#pkgrel
pkgrel 软件的发布号。这通常是一个正整数,用来区分同一版本软件的多次构建。当软件包的补丁和附加功能被添加进入 PKGBUILD ,从而导致生成的软件包发生变化时,pkgrel 应该增加 1 。而当这个软件包发布一个新版本时,发布号重置为 1 。在个别情况下,也会有其他的发布号形式。比如 主版本号.次要版本号。 |
7
voiyy 2022-01-10 19:53:35 +08:00
参考 debian dpkg 版本号规范
|
8
kkocdko 2022-01-10 23:07:16 +08:00
非常抱歉刚刚给出了似乎比较扯淡的答案 emmm ,各位轻喷
|
9
sunng87 2022-01-11 10:57:11 +08:00
其实就是在软件版本之外的打包版本,因为打包脚本、额外修改的 patch 等也是可以单独修改和变化的,所以会有版本概念。比如在 AUR 上,修改了 PKGBUILD 的一些信息、安装方式等,都要增加这个 pkgrel 以示升级
|