惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
Blog — PlanetScale
Blog — PlanetScale
阮一峰的网络日志
阮一峰的网络日志
M
MIT News - Artificial intelligence
月光博客
月光博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
U
Unit 42
博客园_首页
WordPress大学
WordPress大学
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
F
Fortinet All Blogs
腾讯CDC
罗磊的独立博客
IT之家
IT之家
I
InfoQ
V
V2EX
博客园 - 叶小钗
A
About on SuperTechFans
Y
Y Combinator Blog
C
Check Point Blog
量子位
Martin Fowler
Martin Fowler
Vercel News
Vercel News

Dejavu's Blog

甲骨文 ARM 实例部署 Gemma 4 模型 Headscale + Tailscale 组建虚拟专用网 在 Linux 上使用 Yubikey OpenPGP 应用 BuyVM VPS 块存储挂载教程 Alpine Linux 服务器配置指南 Alpine Linux 安装 Cloudflared Docker 多容器共享中心数据库 安装 Komari 服务器监控工具 Scaleway VPS 安装 Debian Linux Debian 13 下部署 AsmBB 论坛 使用 Kopia 自动化备份服务器数据 给 Docker 启用 IPv6 支持 Netcup 服务器安装自定义 ISO 镜像 烽火 HG5582A 光猫开启桥接模式 Docker 自托管 Shlink 短链服务 部署 Obsidian LiveSync 实时同步服务指南 我的 2025 年不完全回顾 Linux 下 Intel 核显驱动配置与硬件加速 Fedora Linux 安装配置记录 2025 年优雅地自托管 RSS 服务 Woodpecker CI 和 Gitea 实现 Hugo 自动部署 Gitea/Forgejo 集成 Woodpecker CI/CD 在 Blinko 中使用 Ollama 作为 AI 供应商 Docker 部署 Gitea/Forgejo Plausible CE 启用城市级地理位置识别 Blinko 开源 AI 知识库 Docker 部署指南 Netcup 免税账号注册及购买服务器全记录 Docker 自托管 Cloudreve Pro 私有网盘服务 GiffGaff SIM 卡使用体验和注意事项 简体中文互联网在变得糟糕吗?
从 Debian 11(bullseye) 无感升级到 Debian 12(bookworm)
Dejavu Moe · 2023-06-11 · via Dejavu's Blog

前言

历时 1年 9 个月零 28 天的开发,Debian 的第 12 个稳定版本 (代号 bookworm1) 在 2023 年 6 月 10 日正式发布了,作为我最喜欢的服务器 Linux 发行版,Debian 一贯以其稳定性和可靠性而值得信赖。

本文将记录下我的升级过程,总体还是十分平滑的,花了不到 10 分钟就完成了。

如有必要,请查阅 Debian 12 发行说明 ,内附详细的升级和错误处理指南。

升级之前

  1. 停止所有 Docker 容器
  2. 停止 Nginx、Cloudflare Tunnel 等服务
  3. 备份重要的数据,包括但不限于 Docker 容器数据卷、数据库、配置文件等等
  4. 准备停机和服务中断后的处理

Debian 软件源一般以发行代号如:bullseyebookworm 引用,但是也可能使用状态名如:stableunstabletesting 引用。在 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 已经安装

验证所有软件包都是可升级状态,正常情况应该输出为空

确保没有软件包是 hold 状态2,否则请遵循 Debian 12 发行说明手动处理

更改 Debian 软件源为 bookworm

sudo sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list

开始升级

更新软件源

先进行最小系统升级

sudo apt upgrade --without-new-pkgs

没问题的话开始进行全面升级,会下载好几百 MB 文件,下载速度取决于服务器网络带宽

如果修改过 SSH 配置文件,出现提示时,请选择保留本地配置

sshd

修改过 GRUB 配置文件,也会出现类似的提示,如非必要建议更新该配置

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

全面升级结束后,重新启动

升级之后

列出已删除的软件包

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]

清理已删除的软件包

同理,清理已过时软件包3

这一步非常危险!过时软件包(包括配置文件)都会被删除!

apt list '~o' \
&& sudo apt purge '~o'

完成。