探寻内心
追求卓越

Linux

linux系统分类

如何使用CLI将Debian 11升级为Debian 12 bookworm

root@local阅读(315)

debian Linux 12“Bookworm”已经发布。新版本提供更新的软件包和五年的支持。本页提供了使用命令行选项将 Debian 11 Bullseye 更新为 Debian 12 Bookworm 的分步指南,包括升级所有已安装的软件包。

教程详情
难度级别 高深
根权限 是的
要求 Linux终端
类别 包管理器
先决条件 Debian Linux 11
操作系统兼容性 Debian • Linux
预计阅读时间 12 分钟

Debian 12 有什么新内容?

  • Apache 2.4.57-2
  • Bash 5.2.15
  • BIND DNS Server 9.18
  • Emacs 27.1
  • GNOME desktop 43
  • KDE desktop/KDE Plasma 5.27
  • Libreoffice 7.4
  • Lighttpd 1.4.69
  • Linux kernel 6.1.0-9
  • LXDE 11
  • LXQt 1.2.0
  • MariaDB 10.11.3-1
  • MATE 1.26
  • Nginx 1.22 with brotli module
  • OpenSSH version 9.2p1-2
  • Perl 5.36.0
  • PHP 8.2
  • Postgresql 15
  • Python 3.11.2
  • Rustc 1.63
  • Vi IMproved (VIM) 9.0
  • Xfce 4.18.

需要明确的是,不可能从 Debian Linux 版本 10 直接升级到版本 12。您需要先完成 Debian 10 到 11 的升级,然后从版本 11 升级到版本 12。

将 Debian 11 升级到 Debian 12

步骤如下:

  1. 备份系统。
  2. 更新现有软件包并重新启动 Debian 11 系统。
  3. 使用编辑器编辑文件 /etc/apt/sources.list,并将的每个实例 bullseye 替换为bookworm 。接下来找到更新行,将关键字 bullseye-updates 替换为 bookworm-updates .最后,搜索安全线,将关键字 bullseye-security 替换为 bookworm-security
  4. 更新 Debian Linux 上的软件包索引,运行:
    sudo apt update
  5. 准备操作系统最小系统升级,运行:
    sudo apt upgrade --without-new-pkgs
  6. 最后,通过运行以下命令将 Debian 11 更新为 Debian 12:
    sudo apt full-upgrade
  7. 重新启动 Linux 系统,以便您可以引导到 Debian 12
  8. 验证一切是否正常工作。

让我们逐步了解将 Debian 11 Bullseye 升级到 Debian 12 Bookworm 在云或裸机环境中安全运行的所有命令。

第 1 步。备份您的系统

警告!必须完成备份过程以避免任何数据丢失或安装失败。保留经过验证的备份的责任在于用户,因为这是系统管理员的基本教训。

备份所有数据和系统配置非常重要。为了有效地做到这一点,可以使用快照快速备份和还原基于云的虚拟机。我首选的备份解决方案是 rsnapshot,它适用于在本地和远程服务器上创建备份。查看 rsnapshot 了解更多信息。使用 lsb_release 命令检查 Linux 中的操作系统版本。

例如:这是我看到的:

lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 11 (bullseye)
Release:	11
Codename:	bullseye

也记下 Linux 内核版本。尝试 uname 命令:我的 Linux 内核版本:

uname -mrs
Linux 5.10.0-23-amd64 x86_64

还要记下使用 cat 命令的 Debian 版本:

cat /etc/debian_version
11.7

 

第 2 步。更新所有现有的已安装软件包

为了使升级更安全,您必须删除非 Debian 软件包。例如,Google Chrome 或 VirtualBox 是使用 3rd 方存储库安装的非 Debian 软件包。这些可能会造成问题。以下是查找此类页面的方法:

sudo apt list '?narrow(?installed, ?not(?origin(Debian)))'
sudo apt-forktracer | sort

幸运的是,我不依赖 Google Chrome、VirtualBox 或 Debian 上的任何第三方应用程序。但是,如果您使用这些应用程序,则应在升级之前备份数据。升级后,如果 Bookworm 版本支持这些软件包,则可以重新安装它们。此外,任何处于保留状态的包都会在升级过程中产生问题。因此,使用 apt-mark 命令列出升级中的所有软件包保留,如下所示:

sudo apt-mark showhold | more
# OR #
sudo dpkg --get-selections | grep 'hold$' | more

然后,您必须借助以下命令逐个删除或删除所有列出的软件包的主机状态:

sudo apt-mark unhold package_name
## OR ##
echo 'package_name install' | sudo dpkg --set-selections

在将 Debian 版本升级到 12 之前,您必须将所有安全补丁和待升级应用到 Debian 11 本身。因此,键入以下 apt 命令或 apt-get 命令:

sudo apt update
sudo apt upgrade
sudo apt full-upgrade
sudo apt --purge autoremove
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libssl1.1 openssl
2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,413 kB of archives.
After this operation, 4,096 B disk space will be freed.
Do you want to continue? [Y/n] y
Get:1 http://mirrors.linode.com/debian-security bullseye-security/updates/main amd64 libssl1.1 amd64 1.1.1n-0+deb11u5 [1,559 kB]
Get:2 http://mirrors.linode.com/debian-security bullseye-security/updates/main amd64 openssl amd64 1.1.1n-0+deb11u5 [854 kB]
Fetched 2,413 kB in 0s (21.2 MB/s)
Reading changelogs... Done
Preconfiguring packages ...
(Reading database ... 30868 files and directories currently installed.)
Preparing to unpack .../libssl1.1_1.1.1n-0+deb11u5_amd64.deb ...
Unpacking libssl1.1:amd64 (1.1.1n-0+deb11u5) over (1.1.1n-0+deb11u4) ...
Setting up libssl1.1:amd64 (1.1.1n-0+deb11u5) ...
(Reading database ... 30868 files and directories currently installed.)
Preparing to unpack .../openssl_1.1.1n-0+deb11u5_amd64.deb ...
Unpacking openssl (1.1.1n-0+deb11u5) over (1.1.1n-0+deb11u4) ...
Setting up openssl (1.1.1n-0+deb11u5) ...
Processing triggers for man-db (2.9.4-2) ...
 
Processing triggers for libc-bin (2.31-13+deb11u6) ...##########################################

重新启动 Debian 11.x 系统以应用内核和其他更新。

sudo systemctl reboot

 

第 3 步。更新 /etc/apt/sources.list 文件

要开始升级过程,必须重新配置 APT 的源列表文件。您可以使用命令 cat 命令或更多命令查看当前设置。这将显示 Debian 11 存储库 URL 的列表。

sudo cat /etc/apt/sources.list
deb http://deb.debian.org/debian bullseye main
deb http://deb.debian.org/debian bullseye-updates main
deb http://deb.debian.org/debian-security/ bullseye-security main

备份并修改,使用sed命令

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

升级到 Debian 12 书虫

关于非自由固件存储库的说明
如果您打算在需要非自由固件的硬件(如WiFi,GPU,声音,Nvida/AMD GPU,NIC等)的台式机或服务器上使用Debian 12,建议包含非自由固件存储库。下面是更新的文件 /etc/apt/sources.list 文件。橙色存储库配置表示您的硬件需要非自由固件。如果您不确定您的硬件,我建议您添加这些存储库。

deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
deb http://deb.debian.org/debian-security/ bookworm-security main contrib non-free non-free-firmware

更新包列表

最后,运行以下命令以获取新的 apt 存储库数据:

sudo apt update

更新 Debian 12 Linux 的软件包列表

 

第 4 步。最少的系统升级

系统提供了以下消息:

315 packages can be upgraded. Run 'apt list --upgradable' to see them.

因此,需要由两部分组成的过程来避免删除要保留的大量包。因此,首先,运行以下命令进行应用:
sudo apt upgrade --without-new-pkgs

Debian 11 到 Debian 12 最小系统升级命令

要完成升级,请仔细按照屏幕上的说明进行操作。在整个过程中,您可能会遇到诸如“是否要重新启动服务?”或“保留或删除配置文件选项?”之类的问题。例如,我看到一个显示新更改的屏幕:

AWS Linode Debian 11.7 至 Debian 12 升级 APT 更改

请按“”退出,进一步,您可能还会看到其他屏幕和对话框:q

在软件包升级期间重新启动 Debian 12 服务而不询问

确保选择“是”选项。

解释一下为什么我在升级系统时会收到提示吗?

您的系统有一些服务,当特定库(如 libpam、libc 和 libssl)更新时需要重新启动。这些重新启动可能会导致服务中断,因此通常会要求您在每次升级期间选择要重新启动的服务。但是,您可以通过选择“是”选项来跳过此提示。通过这样做,所有必要的重新启动将自动发生,并且在每次库升级期间都不会被问题所困扰。这是另一个关于 GRUB 包的例子。配置文件 /etc/default/grub 的新版本 (/tmp/grub.nSxPVErDRh) 可用,但当前安装的版本已在本地修改。你想对修改后的配置文件 grub 做什么?再次仔细检查所有选项。我通常选择“保留当前安装的本地版本”:

新版本的 GRUB 配置 Debian 12 书虫提示符

第5步。将 Debian 11 升级到 Debian 12

要从 Debian 11 完全更新到 Debian 12,有必要进行完整的升级,而不仅仅是最低限度的升级。此步骤对于升级过程至关重要。为此,请输入以下命令以确保安装了所有软件包的最新版本并解析了任何潜在的依赖项。例如:
sudo apt full-upgrade

如何使用 CLI 将 Debian 11 升级到 Debian 12 书虫

 

您可能会遇到更多提示,建议重新启动服务或修改现有配置选项。请务必仔细查看它们。例如,您可以选择更新或保留 OpenSSH 配置文件:

如何处理 Debian 12 上的 OpenSSH 配置文件。更换或保留它

您是否正在考虑在 Debian 12 上替换或保留您的 OpenSSH 配置文件?我决定保留原始。

您已完成整个更新过程。是时候重新启动Linux系统以启动到Debian Linux 12了。在重新启动系统之前,请确保远程服务器的 SSHD 配置文件中没有错误:

sudo sshd -t
sudo vim /etc/ssh/sshd_config
sudo sshd -t

如果没有错误,您可以继续重新启动系统。但是,如果有任何错误,请务必在重新启动之前修复它们。为此,请运行: 再次验证: 现在在修复任何错误后重新启动它: 输出:

sudo systemctl reboot
Connection to 139.1xx.yyy.zz2 closed by remote host.
Connection to 139.1xx.yyy.zz2 closed.

尝试运行 ping 命令以在服务器重新联机时收到通知:

ping -a server_IP_here
ping -a 139.1xx.yyy.zz2

 

第 6 步。验证

全部完成。是时候确认升级了。类型:我得到成功的更新确认:

uname -mrs
Outputs:
Linux 6.1.0-9-amd64 x86_64
lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 12 (bookworm)
Release:	12
Codename:	bookworm

升级后,请注意所有应用和服务。因此,请使用 tail 命令或 ss 命令或 grep 命令/egrep 命令验证所有 TCP/UDP 端口是否已打开以及服务是否正在运行:

sudo ss -tulpn
sudo tail -f /var/log/mail.log
sudo tail -f /var/log/apache2/access_log

# look for errors if any
sudo grep 'error' /var/log/my_pyton_app/sales_app.log
sudo grep -E -i 'err|fail|warn|crit' /var/log/nginx/php_nixcraft_blog.log

# Check for service status
sudo systemctl status nginx.service
sudo systemctl status apache2.service
sudo systemctl status mariadb.service

# Use journalctl to query the contents of the systemd(1) journal
sudo journalctl
sudo journalctl -u sshd.service

 

有关删除不需要的包的说明

警告!尽管是可选的,但查看系统上不再需要的包是至关重要的。
如果执行以下命令,可能导致系统中断。

最后,使用 apt 命令/apt-get 命令清理过时的软件包,如下所示:
sudo apt --purge autoremove

如何将 Debian 11 靶心升级到 Debian 12 书虫

 

有关缺少驱动程序或固件 blobs 的说明

如果您将系统从 Debian 11 升级到 12,存储在您设备上的特定固件可能会被禁用。您可以在位于 /lib/ 的内核模块目录中检查禁用的固件。例如,可能有一个名为firmware-6.bin.在上次升级中禁用的高通固件文件。若要解决此问题,必须重新安装或升级这些文件,然后重新启动系统。这也适用于NVidia等专有驱动程序。因此,创建备份并保持冷静至关重要。

 

总结

你有它。我们已经成功升级到 Debian Linux 12。更新的 Debian 12 版本总是通过 Linux 内核带来新功能和硬件支持。因此,必须评估需求,然后进行升级。Debian Linux 项目还发布了一个深入的指南,解释了在安装过程中可能遇到的其他问题。确保使用 man 命令读取手册页:

$ man apt
$ man apt-get