V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
haoliang
V2EX  ›  Linux

archlinux 里一些软件包的版本的某些部分是咋来的、有啥意义?

  •  
  •   haoliang · 2022-01-10 14:41:49 +08:00 · 3400 次点击
    这是一个创建于 1053 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不完全列举:

    • python:3.10.1-2
    • go:2:1.17.6-1
    • linux:5.15.13.arch1-1
    • qt5-base: 5.15.2+kde+r281-1

    python 中 -2$, go 中 ^2:, linux 中 \.arch1-1, qt5-base 中 \+kde

    起因是我想通过解析 pacman -Qu 找到由重大版本更新的包,在更新前提醒下自己,但碰到这些版本我懵了。 求解惑,谢谢大家了。

    9 条回复    2022-01-11 10:57:11 +08:00
    kkocdko
        1
    kkocdko  
       2022-01-10 14:54:39 +08:00
    正确提问示范:AUR 中某些包的版本号存在后缀,有什么特殊含义?有统一的规范吗?
    搜索关键词:version number suffix
    帮你搜到的似乎有点沾边的答案: https://unix.stackexchange.com/questions/328276/
    大概意思就是:没有准确的规定,这些都是包发布者自己定的,用来区分打包次数(同一版本的前一个打包可能有小瑕疵),特定 fork ,配套依赖的版本等等
    hronro
        2
    hronro  
       2022-01-10 15:05:23 +08:00
    个人猜测哈,3.10.1 这种应该是软件自己的版本号,后面的 `-2` 应该是 Arch 自己构建的时候改了某些构建参数之类的第几次构建?
    2i2Re2PLMaDnghL
        3
    2i2Re2PLMaDnghL  
       2022-01-10 15:21:48 +08:00
    这些后缀通常是下游版本或构建版本
    具体的内容可能是随意指定的
    ( AUR 里你还能看到 +(7 位 git commit hash) )
    haoliang
        4
    haoliang  
    OP
       2022-01-10 15:46:53 +08:00
    谢谢各位。
    之前没有打包的经验,补充了一些相关知识后才知道包版本的格式可以是: `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 咋实现的
    yanqiyu
        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
    meetcw
        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 。在个别情况下,也会有其他的发布号形式。比如 主版本号.次要版本号。
    voiyy
        7
    voiyy  
       2022-01-10 19:53:35 +08:00
    参考 debian dpkg 版本号规范
    kkocdko
        8
    kkocdko  
       2022-01-10 23:07:16 +08:00
    非常抱歉刚刚给出了似乎比较扯淡的答案 emmm ,各位轻喷
    sunng87
        9
    sunng87  
       2022-01-11 10:57:11 +08:00
    其实就是在软件版本之外的打包版本,因为打包脚本、额外修改的 patch 等也是可以单独修改和变化的,所以会有版本概念。比如在 AUR 上,修改了 PKGBUILD 的一些信息、安装方式等,都要增加这个 pkgrel 以示升级
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1042 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:40 · PVG 04:40 · LAX 12:40 · JFK 15:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.