严重混乱:openkylin 1.0和2.0的zhcon软件包使用完全相同的版本号

严重混乱:openkylin 1.0和2.0的zhcon软件包使用完全相同的版本号

2024.9.22

起因:
之前想安装 curl 软件包,发现openkylin 2.0 没有这个包。但是发现 1.0 是有这个包的。因此添加了两个源地址。
/etc/apt/sources.list.d/openkylin-anything.list

deb Index of /kylinsoft/anything2.0/openkylin/ nile main
deb Index of /kylinsoft/anything/openkylin/ yangtze main

其中, anything/ 目录,对应 1.0 yangtze 版本
anything2.0/ 目录,对应 2.0 nile 版本

然後 apt update, apt upgrade 提示 zhcon 和 zhcon-data 可以升級。但是
dpkg -s zhcon, 顯示的(當前已安装的)軟件包版本,
以及
apt download 即将 升级的新版本,都是完全一样的版本!

再到软件源里,查看 deb 包的文件名(注意看 日期,文件大小)。无语了。
以 arm 架构为例:

openkylin 1.0 的 DEB 包:

https://ppa.build.openkylin.top/kylinsoft/anything/openkylin/pool/main/z/zhcon/

zhcon_0.2.6-ok1_arm64.deb
19-Feb-2023 06:40, 287144


再看 openkylin 2.0 的 DEB 包:
https://ppa.build.openkylin.top/kylinsoft/anything2.0/openkylin/pool/main/z/zhcon/

zhcon_0.2.6-ok1_arm64.deb
24-Apr-2024 21:39,288502


怎么会不区别版本号?不怕版本混乱?

1 个赞

一个是anything, 一个是anything2.0,不同的目录就已经区分开了。
使用apt时,会根据/etc/apt下的软件源寻找相应的软件包,而且apt或者dpkg内部有一套完整的版本控制机制,一般情况下不会出问题的。
严格来讲,是楼主你自己的增加软件源的作法,给软件包管理带来了混乱。

确实是混源了,不假。但重点在于:

  • 现在系统是2.0 nile, zhcon 包是 2023年打包的 ,
  • 混加了 1.0 yantze 的源, zhcon 包是 2022年打包。

两者的包名的 版本定义值 都是:
1:0.2.6-ok1

而且等同于系统还提示:
同样的版本名,系统认为 2022年的 openkylin 1.0 的包,比 2023年的 openkylin 2.0 的包,版本更新,提示“可升级”!

这不科学吧?

如果以后像 debian 那样,所有 openkylin 1.0, 2.0, 3.0 版本的软件包,都统一放在/合并到同一个 pool/ 目录下,同名的文件名/包名,就直接互相覆盖了。真的会乱套的。

见图

zhcon-bug1

不同系统版本下的包确实应该加个release version区分一下