我有一个运行 Ubuntu 21.10-server arm6 的 Raspberry Pi 4。我刚刚了解到,在尝试更新/升级软件后,它已达到 EOL。我实际上忘记了安装的系统不是 LTS(显示我很少触摸它的终端)。我正在这台服务器上运行一些服务,但已经忘记了如何配置它(那是 2021 年第一季度),所以我更喜欢升级它,而不是从头开始重新安装所有内容。
小智 23
解决方案
编辑您的/etc/apt/sources.list
并替换http://ports.ubuntu.com/ubuntu-ports
为http://old-releases.ubuntu.com/ubuntu/
. 然后,重新运行命令。
一步步:
/etc/apt/sources.list
(虽然您也可以用#注释行,但备份更好供您自己参考,以保持系统原样,以防万一)/etc/apt/sources.list
使用http://old-releases.ubuntu.com/ubuntu/
代替替换中的 URLhttp://ports.ubuntu.com/ubuntu-ports
sudo apt-get update
,现在应该可以正常运行了。sudo apt-get dist-upgrade
,现在也应该运行良好。do-release-upgrade
(运行此命令之前可能需要重新启动)希望应该是这样。请随意禁用sources.list 中的所有失败源,直到成功升级系统。
正在发生的事情的背景
我刚刚遇到了同样的问题,并记得 ubuntu 为旧的不受支持/退役版本保留了单独的存档。版本停用后,所有包都会从主存储库 URL 中删除。
只是为了提供一点背景知识,我遇到的第一个问题是当我运行时,sudo apt-get update
我收到如下错误:
Err:9 http://ports.ubuntu.com/ubuntu-ports impish Release
404 Not Found [IP: 185.125.190.39 80]
Run Code Online (Sandbox Code Playgroud)
我在尝试运行时遇到了类似的问题sudo apt-get dist-upgrade
E: Failed to fetch http://ports.ubuntu.com/ubuntu-ports/pool/main/s/systemd/libpam-systemd_248.3-1ubuntu8.6_arm64.deb 404 Not Found [IP: 185.125.190.39 80]
Run Code Online (Sandbox Code Playgroud)
事实证明 ubuntu impish/ubuntu 21.10 已退役,因此无法在 ubuntu 主存档中找到它。
接下来我记得/想到的是,有这个,old-releases.ubuntu.com
所以我决定尝试一下。事实证明它有效。
从概念上讲,唯一要做的就是替换 URL 并重新运行命令。有关详细步骤,请参阅此解决方案的顶部。
注意:请考虑到这不仅涉及更改sources.list中的域名,还涉及为ubuntu包url设置正确的文件夹。在本例中,在撰写本文时,URL 为:
http://old-releases.ubuntu.com/ubuntu/
Run Code Online (Sandbox Code Playgroud)
PS:如果您发现此解决方案有一些不准确之处,或其他边缘情况,请告诉我。我会非常乐意修复它们。
更多信息:
如果出现问题(例如 do-release-upgrade 失败,...)或者如果您想更好地了解发生了什么,请查看此页面: