- 所有文章/
从 Debian 11(bullseye) 无感升级到 Debian 12(bookworm)
本文目录
前言 #
历时 1年 9 个月零 28 天的开发,Debian 的第 12 个稳定版本 (代号 bookworm1) 在 2023 年 6 月 10 日正式发布了,作为我最喜欢的服务器 Linux 发行版,Debian 一贯以其稳定性和可靠性而值得信赖。
本文将记录下我的升级过程,总体还是十分平滑的,花了不到 10 分钟就完成了。
升级之前 #
- 停止所有 Docker 容器
- 停止 Nginx、Cloudflare Tunnel 等服务
- 备份重要的数据,包括但不限于 Docker 容器数据卷、数据库、配置文件等等
- 准备停机和服务中断后的处理
Debian 软件源一般以发行代号如:bullseye
、bookworm
引用,但是也可能使用状态名如:stable
、unstable
、testing
引用。在 Debian 12 稳定版正式发布后,stable
就会从 bullseye
指向 bookworm
了
检查软件源,确保下面的输出为空,否则请手动更改软件源为 bullseye
cat /etc/apt/sources.list | grep stable
不能跨多个大版本升级,确保现在运行的操作系统是 Debian 11.x,更新当前的软件包
sudo apt update \
&& sudo apt upgrade -y
列出非 Debian 默认源软件包
apt list '?narrow(?installed, ?not(?origin(Debian)))'
Listing... Done
cloudflared/unknown,now 2023.5.1 arm64 [installed]
containerd.io/bullseye,now 1.6.21-1 arm64 [installed]
docker-buildx-plugin/bullseye,now 0.10.5-1~debian.11~bullseye arm64 [installed,automatic]
docker-ce-cli/bullseye,now 5:24.0.2-1~debian.11~bullseye arm64 [installed]
docker-ce-rootless-extras/bullseye,now 5:24.0.2-1~debian.11~bullseye arm64 [installed,automatic]
docker-ce/bullseye,now 5:24.0.2-1~debian.11~bullseye arm64 [installed]
docker-compose-plugin/bullseye,now 2.18.1-1~debian.11~bullseye arm64 [installed]
nginx/stable,now 1.24.0-1~bullseye arm64 [installed]
可以看到,我的服务器上主要是 Nginx、Docker 和 Cloudflare Tunnel 这些
ls -lh /etc/apt/sources.list.d/
total 12K
-rw-r--r-- 1 root root 109 Feb 7 09:25 cloudflared.list
-rw-r--r-- 1 root root 115 Jan 13 17:18 docker.list
-rw-r--r-- 1 root root 110 Feb 26 11:45 nginx.list
它们的 APT 源都有了 bookworm
的支持,直接替换就行
sudo sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list.d/*.list
确保软件包 gpgv
已经安装
sudo apt install -y gpgv
验证所有软件包都是可升级状态,正常情况应该输出为空
sudo dpkg --audit
确保没有软件包是 hold
状态2,否则请遵循 Debian 12 发行说明手动处理
sudo apt-mark showhold
更改 Debian 软件源为 bookworm
sudo sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list
开始升级 #
更新软件源
sudo apt update
先进行最小系统升级
sudo apt upgrade --without-new-pkgs
没问题的话开始进行全面升级,会下载好几百 MB 文件,下载速度取决于服务器网络带宽
sudo apt full-upgrade
如果修改过 SSH 配置文件,出现提示时,请选择保留本地配置
修改过 GRUB 配置文件,也会出现类似的提示,如非必要建议更新该配置
提示系统日志记录组件配置文件被修改过,这里我选择了直接覆盖本地的修改
Configuration file '/etc/systemd/journald.conf'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** journald.conf (Y/I/N/O/D/Z) [default=N] ? Y
全面升级结束后,重新启动
sudo reboot
升级之后 #
列出已删除的软件包
apt list '~c'
Listing... Done
fail2ban/stable 1.0.2-2 all [residual-config]
fonts-droid-fallback/stable,now 1:6.0.1r16-1.1 all [residual-config]
fonts-noto-mono/stable,now 20201225-1 all [residual-config]
golang-go/stable 2:1.19~1 arm64 [residual-config]
gsfonts/stable 2:20200910-7 all [residual-config]
imagemagick-6-common/stable 8:6.9.11.60+dfsg-1.6 all [residual-config]
linux-image-5.10.0-20-arm64/now 5.10.158-2 arm64 [residual-config]
linux-image-5.10.0-21-arm64/now 5.10.162-1 arm64 [residual-config]
poppler-data/stable 0.4.12-1 all [residual-config]
清理已删除的软件包
sudo apt purge '~c'
同理,清理已过时软件包3
apt list '~o' \
&& sudo apt purge '~o'
完成。