如何在 EOL 后将 Ubuntu 21.10 升级到 22.04?

eSP*_*iYa 18 ubuntu-22.04

我有一个运行 Ubuntu 21.10-server arm6 的 Raspberry Pi 4。我刚刚了解到,在尝试更新/升级软件后,它已达到 EOL。我实际上忘记了安装的系统不是 LTS(显示我很少触摸它的终端)。我正在这台服务器上运行一些服务,但已经忘记了如何配置它(那是 2021 年第一季度),所以我更喜欢升级它,而不是从头开始重新安装所有内容。

小智 23

解决方案

编辑您的/etc/apt/sources.list并替换http://ports.ubuntu.com/ubuntu-portshttp://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,现在应该可以正常运行了。
  • Run 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 失败,...)或者如果您想更好地了解发生了什么,请查看此页面: