当我尝试使用 APT 运行更新时,如果单个存储库存在问题,APT 将无法继续,更新将失败...APT 不应该跳过该存储库并继续吗?尤其是当它是 下的单独文件时/etc/sources.list.d/
?并且不连接到任何 Ubuntu 存储库?
这难道不是一个安全漏洞吗?如果可以编写一个错误的存储库列表,它将阻止重要的安全存储库通过无人值守的更新进行更新,不是吗?幸运的是,它第二次更新了安全存储库……也许这是设计使然。
这是我得到的结果apt update
。损坏的存储库更新无法继续。
Hit:1 http://archive.ubuntu.com/ubuntu - InRelease
Hit:2 http://security.ubuntu.com/ubuntu --security InRelease
Hit:3 http://archive.ubuntu.com/ubuntu --updates InRelease
Hit:4 http://archive.ubuntu.com/ubuntu --backports InRelease
Ign:5 http://apt.keepsolid.com/ubuntu - InRelease
Err:6 http://apt.keepsolid.com/ubuntu - Release
404 Not Found [IP: 144.217.71.199 80]
Reading package lists... Done
E: The repository 'http://apt.keepsolid.com/ubuntu - Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
答案1
这是设计使然。源代码apt
,只有三种可能的响应代码:
0
— 没有错误
1
— 没有传递参数
100
— 重要的事情不正确
由于apt
负责在机器上安装软件,因此对于何时可以继续以及何时应该彻底失败,存在过多的警告。当存在可以忽略的问题时,W
会发送(警告)消息通知您出现错误,但任何E
(错误)都会强制apt
停止。
对于绝大多数人来说,拥有一个运行旧版本软件的工作系统要比拥有一个安装了一半的最新版本软件的损坏系统要好。
为什么不apt
说“哦,这个 repo 没有这个系统版本的发布文件,所以我们就默默地跳过它吧?”因为apt
管理源代码不是 的工作。源代码管理的责任落在系统管理员身上。如果管理员不想管理,那么apt
它将尽其所能,仅此而已。
如果您认为这apt
应该自行处理,也许您可以为 Debian 团队撰写一份提案并让他们考虑将其纳入未来的版本