Search K
主题
主题
Ubuntu 24.04 LTS(代号“Noble Numbat”)已于 2024 年 4 月 25 日正式发布,带来了许多新特性以及软件包版本的升级,例如使用了 Linux 6.8 内核。此版本的生命周期为 5 年,至 2029 年 6 月。
新主机可以直接下载安装新系统。但运行上个版本 LTS 的主机只能在新 LTS 的第一个小版本(即 24.04.1)发布后才能升级。该版本原计划于 8 月 15 日发布,但由于遇到了一些问题,推迟到了 8 月 29 日。
本文现将 Ubuntu Server 22.04.4 LTS 升级至 24.04.1 LTS 的流程和遇到的问题记录如下。
参考
Ubuntu 24.04 LTS (Noble Numbat) Release Notes - Release - Ubuntu Community Hub
Ubuntu 24.04 LTS 完整的发布说明。
Ubuntu 24.04.1 point-release delayed until August 29 - Release - Ubuntu Community Hub
Ubuntu 24.04.1 延期发布的通知。
由于系统升级完成后需要重启,先手动停止可能受影响的程序和服务。
在终端执行 sudo apt update
检查软件包更新,再执行 sudo apt dist-upgrade
安装更新。如有需要,执行 sudo reboot
重启系统。
因系统升级有可能会更新主机 sshd,当通过 SSH 升级系统时,需要在主机防火墙设置里暂时放行 1022 端口,以供升级期间临时使用。对于 UFW,命令为 sudo ufw allow 1022
。
注意
如果准备升级的主机有重要用途,或无法承担升级过程中或之后出现意外的后果,请及时备份现有系统以便快速恢复。
准备完成后,即可执行 sudo do-release-upgrade
检查是否有可用的系统升级,弹出升级提示后按 y
继续。
由于主机上使用了 Docker CE,此前在 /etc/apt/sources.list.d/docker.list
中添加了其官方软件源。但目前主机无法访问 download.docker.com,系统在检查软件包更新时会报错,导致升级终止。
因此,考虑更换清华大学镜像源。在阅读其 帮助文档 的说明后,发现仅需执行以下命令即可。
注意
以下命令依然需要从 Docker 官方网站获取 GPG 公钥。
因此要么从可以访问 download.docker.com 的设备传输一份 GPG 公钥文件,要么直接使用清华大学镜像源中的 GPG 公钥并自行承担可能的安全风险。
提示
自 2024 年 9 月 9 日左右开始,主机可以正常访问 download.docker.com。
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo install -m 0755 -d /etc/apt/keyrings
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg ./gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
更换软件源后,主机可以正常获取 Docker CE 的更新。
再一次的升级过程中,顺利获取了软件源列表,但系统提示如下信息并终止升级:
...
After updating your package information, the essential package
'ubuntu-minimal' could not be located. This may be because you have
no official mirrors listed in your software sources, or because of
excessive load on the mirror you are using. See /etc/apt/sources.list
for the current list of configured software sources.
In the case of an overloaded mirror, you may want to try the upgrade
again later.
...
经调查,发现原因是使用了 Ubuntu 软件仓库的镜像源。
解决方法有两个:
sudo do-release-upgrade --allow-third-party
命令,允许升级过程中使用镜像源。/etc/apt/sources.list
中镜像源 URL 换回官方源 http://archive.ubuntu.com/ubuntu
。经测试,官方源速度尚可。解决了以上问题后,升级顺利进行,获取了约 1000 个软件包并成功安装。
提示
在安装某些软件包的过程中,系统会暂停并询问使用新配置文件还是现有的配置文件。
此时可以选择保留当前配置文件。升级完成后,可在原有配置文件所在目录找到以 .dpkg-dist
或 .ucf-dist
等为结尾的文件,即为新版本默认配置文件。
重启后,检查系统是否升级成功。
最后关闭临时端口 1022。对于 UFW,先执行 sudo ufw status numbered
查看规则列表,再执行 sudo ufw delete [端口 1022 对应的规则编号]
。通常有两条规则(IPv4 和 IPv6),建议先删除后一条,以防规则列表编号变动。
查看 Ubuntu 软件源配置文件 /etc/apt/sources.list
会获得以下信息,提示配置文件移动到了新位置。
# Ubuntu sources have moved to /etc/apt/sources.list.d/ubuntu.sources
而新配置文件 /etc/apt/sources.list.d/ubuntu.sources
的格式也与以往不同,采用了 DEB822 格式。
Types: deb
URIs: http://archive.ubuntu.com/ubuntu
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Types: deb
URIs: http://security.ubuntu.com/ubuntu
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
简单来说,若需配置镜像源,仅需修改其中第二行 URIs
的内容即可。
此外,系统升级后默认禁用了原先配置的第三方软件源,我们可以将 /etc/apt/sources.list.d/
中以 .list.distUpgrade
结尾的旧配置文件修改成新格式。
以前文配置的 Docker CE 镜像源为例,在 /etc/apt/sources.list.d/
中创建 docker.sources
文件,内容如下所示。
Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu
Suites: noble
Components: stable
Signed-By: /etc/apt/keyrings/docker.gpg
旧格式与新格式之间可以简单对应,其中 Suites
一项为发行版名称,Signed-By
一项为签名密钥。更新完配置文件后执行 sudo apt update
检查是否正常获取了第三方软件源列表。
参考
Explanation of the DEB822 Source Format — RepoLib documentation
DEB822 软件源配置格式的说明文档。