RubyMetric / chsrc

chsrc 全平台通用换源工具. Change Source for every software on every platform from the command line.
https://gitee.com/RubyMetric/chsrc
GNU General Public License v3.0
1.32k stars 54 forks source link

连续两次更换 ubuntu 的源会导致添加出错 #40

Closed JAM2199562 closed 2 days ago

JAM2199562 commented 1 week ago

假设原来的源是 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse 要添加的源是 https://mirrors.internal.local/nexus/repository/ubuntu22.04 执行的命令是 chsrc set ubuntu https://mirrors.internal.local/nexus/repository/ubuntu22.04 首次执行后,可以成功使用 但是假设我记错了发行版,现在需要进行修复,执行的命令如下 chsrc set ubuntu https://mirrors.internal.local/nexus/repository/ubuntu24.04 之后 apt update 就会出错了 查看 sourcelist.list,发现源变成了了下面这样 https://mirrors.internal.local/nexus/repository/ubuntu22.04/24.04 如果多次执行,这行就会一直变长

ccmywish commented 1 week ago

你好 @JAM2199562

是的,按照现有的代码,确实会出现你所说的现象。但是这是跟你指定的URL相关的。

目前所有公开的Ubuntu的换源URL都是类似下图这样的,各大镜像站都不会指定后面的ubuntu具体版本数字,而是靠后面的 CODENAME(如jammy) 来指定版本。

image

你可以看下 https://mirrors.aliyun.com/ubuntu/ 的目录结构。

所以上述你提供的似乎是内部专用的Ubuntu源,该源是否搭建有问题?

JAM2199562 commented 4 days ago

指定

您好 @ccmywish 确实是用 Sonatype Nexus Repository 搭建的源,我感觉正是因为是自建的可能才更需要自定义,比如公司不允许访问互联网的情况,不然内置的实际上已经足够啦。 我能够确认不是内部源搭建的问题,但是 repo 名字指定的可能确实有点冲突, 因为我如果只执行一次这个命令,它其实是能够正常工作的。

ccmywish commented 4 days ago

@JAM2199562

我明白。所以你那边可以修改URL从而不带后面的版本号吗?

如果不能,有什么困难吗?如果困难很大,我这边可以调整chsrc的代码。

JAM2199562 commented 3 days ago

@JAM2199562

我明白。所以你那边可以修改URL从而不带后面的版本号吗?

如果不能,有什么困难吗?如果困难很大,我这边可以调整chsrc的代码。

明白,我这边确实是可以改的,而且最简单的办法就是我不执行两次就行啦,所以这个也就是反馈一下,倒也不用您一定修改代码。谢谢!

ccmywish commented 2 days ago

感谢理解👍