第 5 章 bookworm 中需要注意的问题

目录

5.1. 升级到 bookworm 时可能出现的问题
5.1.1. 非自由固件在仓库中被划分到了单独的分区
5.1.2. 设置系统时钟的软件包的变更
5.1.3. Puppet 配置管理系统升级到了版本 7
5.1.4. youtube-dl 被 yt-dlp 取代
5.1.5. 不同版本的 Fcitx 将不能共存
5.1.6. MariaDB 软件包名不再包含版本号
5.1.7. 系统日志的变更
5.1.8. 影响日志分析工具(如 logcheck)的 rsyslog 变更
5.1.9. rsyslog 创建的日志文件更少
5.1.10. slapd 的升级可能需要人工干预
5.1.11. GRUB 不再默认运行 os-prober
5.1.12. GNOME 对屏幕阅读器的支持有所下降
5.1.13. 对 32-bit PC 的最低要求提升到了 i686
5.1.14. polkit 配置的变更
5.1.15. 合并的 /usr 现在是必需的
5.1.16. 从 buster 升级(不受支持)会因为 libcrypt1 而失败
5.1.17. 升级后在重启前需要做的事
5.2. 升级过程之外的注意事项
5.2.1. 安全支持上的局限性
5.2.2. Python 解释器标记为由外部管理
5.2.3. VLC 中视频编/解码的硬件加速支持受限
5.2.4. systemd-resolved 被分割成单独的软件包
5.2.5. systemd-boot 被分割成单独的软件包
5.2.6. systemd-journal-remote 不再使用 GnuTLS
5.2.7. bookworm 中的 adduser 的重大变更
5.2.8. Xen 网络接口的可预测命名
5.2.9. dash 对“^”的处理方式的变更
5.2.10. netcat-openbsd 支持抽象套接字
5.3. 过时与废弃内容
5.3.1. 值得注意的过时软件包
5.3.2. bookworm 的废弃组件
5.4. 已知的严重缺陷

有时,新发行版本引入的变化会产生一些我们无法有效避免的副作用,或者是会导致系统在其它地方暴露问题。我们在此记述了一些我们所知道的问题。请同时参阅勘误表,相关软件包之说明文件,错误报告及其它在第 6.1 节 “扩展阅读”中所提及的信息。

5.1. 升级到 bookworm 时可能出现的问题

本节介绍从 bullseye 升级到 bookworm 的相关问题。

5.1.1.  非自由固件在仓库中被划分到了单独的分区

第 2.2 节 “软件仓库分区”所述,非自由固件软件包已在仓库中被划分到了一个专门的分区,名为 non-free-firmware。为了确保已安装的非自由固件软件包能正常收到更新,您需要修改 APT 的配置。假设您仅仅需要将 non-free 分区加入 APT source-list,以便于安装固件,则修改过的 APT source-list 条目将类似于:

deb https://deb.debian.org/debian bookworm main non-free-firmware

如果 apt 指引您来阅读本章节,而您不想再收到关于此变更的提醒,您可以创建一个名为 /etc/apt/apt.conf.d/no-bookworm-firmware.confapt.conf(5) 文件,内容如下:

APT::Get::Update::SourceListWarnings::NonFreeFirmware "false";

5.1.2. 设置系统时钟的软件包的变更

ntp 软件包曾经是与 NTP(Network Time Protocol,网络时间协议)服务器进行时间同步的默认方式。它已被 ntpsec 取代。

绝大多数用户不需要进行任何特殊的操作,即可从 ntp 过渡到 ntpsec

在 bookworm 中,也有其他一些软件包提供类似的服务。Debian 现在默认使用 systemd-timesyncd,对于只需要 ntp 客户端来设置时钟的用户而言,它已经够用了。bookworm 也收录了 chronyopenntpd,它们支持更高级的特性,例如搭建您自己的 NTP 服务器。

5.1.3. Puppet 配置管理系统升级到了版本 7

Puppet 从版本 5 升级到了版本 7,完全跳过了 Puppet 6 系列。这给 Puppet 生态系统带来了多项重大变化。

经典的基于 Ruby 的 Puppet Master 5.5.x 应用已经被上游废弃,因此在 Debian 中已不再可用。它已被 Puppet Server 7.x 取代,该应用由软件包 puppetserver 提供。该软件包将作为过渡软件包 puppet-master 的依赖被自动安装。

某些情况下,Puppet Server 可以无缝替代 Puppet Master,不过您应当检查 /etc/puppet/puppetserver 下的配置文件,以确保新的默认值适合于您的部署。特别需要注意的是,auth.conf 的旧格式已被弃用,请阅读 auth.conf 文档了解详细信息。

推荐的方式是先升级服务器,再升级客户端。Puppet 7 Server 与旧的客户端向后兼容;Puppet 5 Server 可以处理被升级的代理,但是不能注册新的 Puppet 7 代理。所以,如果您先部署新的 Puppet 7 代理,再升级服务器,您将无法将它们加入 fleet。

puppet 软件包已被 puppet-agent 软件包取代,并已成为过渡软件包,以确保平滑升级。

最后,puppetdb 软件包虽然已在 bullseye 中被移除,但是重新进入了 bookworm。

5.1.4. youtube-dl 被 yt-dlp 取代

可以下载多个网站的视频(包括但不限于 YouTube 视频)的流行工具,youtube-dl,不再被包含于 Debian。它已经被一个空的过渡软件包取代,该软件包会安装 yt-dlp 软件包。yt-dlpyoutube-dl 的分支,当前开发比较活跃。

我们没有提供用于兼容的包装器,所以您需要调整您的脚本和个人习惯,执行 yt-dlp 而不是 youtube-dl。两个程序的功能基本上一样,但有一些选项和行为细节有所不同。请务必阅读 yt-dlp手册页了解详情,尤其是 Differences in default behavior 一节。

5.1.5. 不同版本的 Fcitx 将不能共存

软件包 fcitxfcitx5 提供了流行的 Fcitx 输入法框架的第 4 版和第 5 版。遵照上游的建议,它们将不能在同一个操作系统中共存。之前同时安装了 fcitxfcitx5 的用户需要决定想要保留 Fcitx 的哪个版本。

强烈建议用户在升级之前清除不想要的 Fcitx 版本的所有相关的软件包(Fcitx 4 是 fcitx-*,Fcitx 5 是 fcitx5-*)。升级完成之后,请考虑重新执行 im-config 以选择系统中想使用的输入法框架。

您可以阅读发布于邮件列表中的通知以了解更多背景信息(通知以简体中文写成)。

5.1.6. MariaDB 软件包名不再包含版本号

和 bullseye 在 MariaDB 软件包名中包含版本号(例如 mariadb-server-10.5mariadb-client-10.5)不同,在 bookworm 中,对应的 MariaDB 10.11 软件包名完全不包含版本号(例如 mariadb-servermariadb-client)。在软件包版本元数据中仍然可以看到 MariaDB 的版本。

至少有一个已知的升级场景(缺陷编号 #1035949)会导致过渡到不带版本号的软件包名失败:执行

apt-get install default-mysql-server

可能会失败,因为在升级过程中,在 MariaDB 服务器 SysV init 服务使用 mariadb-admin 执行关闭操作前,删除了 mariadb-client-10.5 和它包含的文件 /usr/bin/mariadb-admin。解决办法是执行

apt upgrade

然后再执行

apt full-upgrade

要了解关于 MariaDB 软件包名变更的更多信息,请阅读 /usr/share/doc/mariadb-server/NEWS.Debian.gz

5.1.7. 系统日志的变更

大多数系统已经不再需要 rsyslog 软件包,因此您可能可以移除它。

许多程序通过日志消息告诉用户它们在做什么。这些消息可以用 systemd 的 journal 进行管理,也可以用 syslog 守护进程 进行管理,比如 rsyslog

在 bullseye 中,会默认安装 rsyslog,并且将 systemd journal 配置为转发日志消息到 rsyslog,后者会将消息写到多个文本文件中,例如 /var/log/syslog

从 bookworm 开始,不再默认安装 rsyslog。如果您不想继续使用 rsyslog,在升级完成后您可以先运行

apt-mark auto rsyslog

将它标记为自动安装,再运行

apt autoremove

来删除它(如果可能的话)。如果您是从旧的 Debian 版本升级来的,并且没有使用默认设置,那么 journal 可能不会把消息保存到持久化存储。要启用此功能,请阅读 journald.conf(5) 中的步骤。

如果您决定不再使用 rsyslog,您可以使用 journalctl 阅读以二进制格式保存在 /var/log/journal 的日志消息。例如,

journalctl -e

显示 journal 中最近的一些日志消息,而

journalctl -ef

会在新的消息被写入的同时显示它们(和运行

tail -f /var/log/syslog

类似)。

5.1.8. 影响日志分析工具(如 logcheck)的 rsyslog 变更

rsyslog 现在默认使用高精度时间戳,这可能影响其他分析系统日志的工具。您可以阅读 rsyslog.conf(5) 了解关于如何修改此设置的更多信息。

由于时间戳上的变更,您可能需要更新本地创建的 logcheck 规则。logcheck 读取系统日志中的消息,并将它们和自定义的正则表达式(称为规则)构成的数据库进行对比。您需要更新用于匹配消息的创建时间的规则,以兼容新的 rsyslog 格式。logcheck-database 软件包提供的默认规则已经更新了,但其他规则,包括本地创建的规则,需要被更新,才能识别出新的格式。/usr/share/doc/logcheck-database/NEWS.Debian.gz 中有一个可以更新本地 logcheck 规则的脚本。

5.1.9. rsyslog 创建的日志文件更少

rsyslog 修改了它将创建哪些日志文件,所以您可以删除 /var/log 中的一些文件了。

如果您决定继续使用 rsyslog(参见第 5.1.7 节 “系统日志的变更”),那么 /var/log 中的一些日志文件将默认不再被创建。原先写入这些文件中的消息也会被同时写入到 /var/log/syslog 中,但不再默认创建这些文件。原先写入到这些文件中的所有内容仍然可以在 /var/log/syslog 中查看。

不再创建的文件包括:

  • /var/log/mail.{info,warn,err}

    这些文件包含来自本地的邮件传送代理(MTA)的消息,按照优先级分成不同的文件。

    因为 /var/log/mail.log 已经包含了所有和邮件相关的消息,所以可以安全地删除这些文件(以及对应的已被归档的旧文件)。如果您使用这些文件来监测异常状况,可以考虑使用诸如 logcheck 的工具来替代。

  • /var/log/lpr.log

    这些文件包含和打印有关的日志消息。Debian 默认的打印系统是 cups,它不使用该文件,所以除非您使用另一个打印系统,否则就可以删除这些文件(以及对应的已被归档的旧文件)。

  • /var/log/{messages,debug,daemon.log}

    可以删除这些文件(以及对应的已被归档的旧文件)。原先写入这些文件的内容还会出现在 /var/log/syslog

5.1.10. slapd 的升级可能需要人工干预

OpenLDAP 2.5 是一次重大的版本更新,包括了多个不兼容的变更,在上游的发布公告中已经有描述。取决于不同的配置,slapd 服务在升级后可能会保持停止状态,直到您完成必要的配置修改。

以下是一些已知的不兼容的变更:

  • slapd-bdb(5)slapd-hdb(5) 数据库后端已经被移除。如果您在 bullseye 中使用这些后端中的一个,强烈建议您在升级到 bookworm 之前 迁移到 slapd-mdb(5) 后端。

  • slapd-shell(5) 数据库后端已经被移除。

  • slapo-ppolicy(5) 叠加层将它的模式编译进了模块。如果存在旧的外部模式,它会与新的内置模式冲突。

  • pw-argon2 这个由社区贡献的密码模块已改名为 argon2

完成升级和恢复 slapd 服务所需的步骤可以在 /usr/share/doc/slapd/README.Debian.gz 中找到。您也可以参考上游提供的升级注意事项

5.1.11. GRUB 不再默认运行 os-prober

很长一段时间以来,grub 都在使用 os-prober 软件包检测计算机上安装的其他操作系统,并将它们加入引导菜单中。不幸的是,某些情况下这可能会引起问题(例如虚拟机的客户机正在运行的时候),所以上游最新版本默认禁用了此行为。

如果您使用 GRUB 引导您的系统,并且希望在引导菜单中继续显示其他操作系统,您可以更改此行为。您可以编辑 /etc/default/grub 文件,确保设置了 GRUB_DISABLE_OS_PROBER=false,然后重新运行 update-grub。或者,您也可以执行

dpkg-reconfigure <GRUB软件包名>

来更改此行为。这条命令可以以用户友好的方式修改多种 GRUB 设置。

5.1.12.  GNOME 对屏幕阅读器的支持有所下降

许多 GNOME 应用从 GTK3 切换到了 GTK4。令人难过的是,这使得这些应用与屏幕阅读器(例如 orca)之间的兼容性下降了很多。

如果您依赖屏幕阅读器,您应当考虑切换到另一个桌面,例如 Mate,它有更好的辅助功能支持。您可以安装 mate-desktop-environment 软件包进行切换。关于如何在 Mate 中使用 Orca 的信息可以在这里找到。

5.1.13.  对 32-bit PC 的最低要求提升到了 i686

Debian 对 32-bit PC(也就是 Debian 架构 i386)的支持现在不再包括任何 i586 处理器。新的最低硬件要求是 i686。也就是说,i386 架构现在需要“long NOP”(NOPL)指令支持,而 bullseye 仍然支持没有该指令的部分 i586 处理器(例如“AMD Geode”)。

如果您的机器不满足该要求,建议您在 bullseye 剩余的支持周期内停留在该版本。

5.1.14. polkit 配置的变更

为了与上游和其他发行版保持一致,polkit(以前叫做 PolicyKit)服务修改了本地策略规则的语法和存储位置。polkit 允许无特权的程序访问有特权的系统服务。您现在应当使用 JavaScript 编写用来自定义安全策略的本地规则,然后将它们放在 /etc/polkit-1/rules.d/*.rules。以新格式编写的示例规则可以在 /usr/share/doc/polkitd/examples/ 找到。更多信息可以在 polkit(8) 中找到。

以前的情况是,可以用 pkla 格式编写规则,然后将它们放在 /etc/polkit-1/localauthority/var/lib/polkit-1/localauthority 的子目录中。但是,.pkla 文件应当被视为是已废弃的,并且仅在安装了 polkitd-pkla 软件包的情况下才会继续工作。通常情况下,在您升级到 bookworm 时,会自动安装该软件包,但是未来的 Debian 发布版本可能不会包含该软件包,因此所有覆盖默认策略的本地策略未来都需要迁移到 JavaScript 格式。

5.1.15.  合并的 /usr 现在是必需的

Debian 已经批准了一个名为 合并的 /usr 的文件系统布局,它不再包含遗留的 /bin/sbin/lib 目录,也不包含其他可选的变种,例如 /lib64。在新的布局中,遗留的目录被指向对应位置(/usr/bin/usr/sbin/usr/lib/usr/lib64)的符号链接替代。这意味着,比如说,/bin/bash/usr/bin/bash 都会启动 bash

对于安装时为 buster 或 bullseye 的系统而言,不会有任何变化,因为在这两个版本中,默认已经使用新的文件系统布局了。但是,旧的布局已经不再受支持,并且使用旧布局的系统在升级到 bookworm 时会转换到新布局。

转换到新布局的过程对大多数用户没有影响。所有文件都会被自动移动到新的位置,包括本地安装的文件和来自并非由 Debian 提供的软件包的文件,并且硬编码的路径,例如 /bin/sh,仍然会继续工作。但是,也有一些潜在的问题:

  • dpkg --search

    对于被移动到新位置的文件会给出错误的结果:

    dpkg --search /usr/bin/bash

    不能识别出 bash 来自一个软件包。(但是

    dpkg --search /bin/bash

    仍然会和预期一样正常工作。)

  • 并非由 Debian 提供的本地软件可能不支持新布局,并且,比如说,可能会依赖于 /usr/bin/name/bin/name 是两个不同的文件。在合并的系统中(包括从 buster 开始新安装的系统),这是不受支持的,所以在升级之前,任何此类软件都必须被修复或移除。

  • 依赖于一个不可直接写入的基本层的系统(例如 WSL1 映像,或者使用多层 overlayfs 文件系统的容器系统)不能被安全地转换,所以要么需要被替换(例如从商店中安装一个新的 WSL1 映像),要么需要升级每个层(例如独立更新 overlayfs 的 Debian 基本层),而不是使用 dist-upgrade。

要了解更多信息,请阅读 The Case for the /usr merge 一文,以及 Debian 技术委员会决议

5.1.16. 从 buster 升级(不受支持)会因为 libcrypt1 而失败

Debian 官方只支持从一个稳定版本升级到下一个,例如从 bullseye 升级到 bookworm。从 buster 升级到 bookworm 是不受支持的,并且会因为缺陷 #993755 而失败,出现以下错误:

Setting up libc6:i386 (2.36-9) ...
/usr/bin/perl: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory
dpkg: error processing package libc6:i386 (--configure):
installed libc6:i386 package post-installation script subprocess returned error exit status 127
        

但是,可能可以通过强制安装新的 libcrypt1 软件包来手动从该状况中恢复:

# cd $(mktemp -d)
# apt download libcrypt1
# dpkg-deb -x libcrypt1_*.deb .
# cp -ra lib/* /lib/
# apt --fix-broken install
        

5.1.17. 升级后在重启前需要做的事

apt full-upgrade 完成时,形式上的升级就完成了。对于向 bookworm 的升级而言,重启前没有什么特别的操作需要完成。

5.2. 升级过程之外的注意事项

5.2.1. 安全支持上的局限性

有一些软件包,Debian 不能保证针对安全漏洞提供最小的向后移植。这些将在以下小节中介绍。

[注意]注意

debian-security-support 软件包可帮助跟踪已安装软件包的安全支持状态。

5.2.1.1. 网页浏览器及其渲染引擎的安全支持状态

Debian 12 包含几个浏览器引擎,长期以来安全漏洞断续发生。高比例的漏洞,加上上游对长期分支支持不力,使得向后移植这些浏览器的安全补丁非常困难。此外,库的相互依赖性使我们难以将其更新到较新的上游版本。使用 webkit2gtk 源软件包的应用程序(例如 epiphany)提供安全支持,但使用 qtwebkit(源软件包 qtwebkit-opensource-src)的应用程序不提供安全支持。

对于通用网页浏览器,我们推荐 Firefox 和 Chromium。这些软件将使用最新的 ESR 版本持续在 stable 中予以更新。这同样适用于 Thunderbird。

一旦一个发布版本成为 oldstable,官方支持的浏览器的支持周期可能短于发布版本的标准支持周期。例如,Chromium 在 oldstable 中只会获得 6 个月的安全支持,而不是通常的 12 个月。

5.2.1.2. 基于 Go 和 Rust 的软件包

Debian 当前的基础架构在重新构建系统化使用静态链接的软件包时存在一些问题。随着 Go 和 Rust 生态系统的成长,这些软件包将只能得到有限的安全支持,直到基础架构得到改进使得这些软件包更加易于维护。

大多数情况下,如果 Go 或 Rust 开发库需要更新,这些更新只能通过定期的小版本更新提供。

5.2.2. Python 解释器标记为由外部管理

为了遵循 PEP-668,Debian 提供的 python3 解释器软件包(python3.11pypy3)已被标记为由外部管理。Debian 提供的 python3-pip 也遵循此提案,并且会拒绝在 Debian 的 python 解释器中手动安装软件包,除非使用了 --break-system-packages 选项。

如果您想安装的 Python 应用程序(或者您想安装的版本)尚未被 Debian 打包,我们建议您使用 pipx(位于 Debian 软件包 pipx)进行安装。pipx 会创建一个与其他应用程序和系统 Python 模块相隔离的环境,并将该应用程序及其依赖关系安装至其中。

如果您想安装的 Python 库模块(或者您想安装的版本)尚未被 Debian 打包,我们建议您在可能的情况下将其安装到 virtualenv。您可以使用 Python 标准库模块 venv(位于 Debian 软件包 python3-venv)或者 Python 第三方工具 virtualenv(位于 Debian 软件包 virtualenv)创建 virtualenv。例如,要代替 pip install --user foo 命令,您可以执行: mkdir -p ~/.venvs && python3 -m venv ~/.venvs/foo && ~/.venvs/foo/bin/python -m pip install foo 以将其安装到专门的 virtualenv。

阅读 /usr/share/doc/python3.11/README.venv 以了解详细信息。

5.2.3. VLC 中视频编/解码的硬件加速支持受限

VLC 视频播放器通过 VA-API 和 VDPAU 支持视频编码和解码的硬件加速。但是,VLC 对 VA-API 的支持和 FFmpeg 的版本密切相关。因为 FFmpeg 升级到了 5.x 分支,VLC 的 VA-API 支持已被禁用。使用支持原生 VA-API 的 GPU(例如 Intel 和 AMD 的 GPU)的用户可能在播放和编码视频时发现 CPU 使用率较高。

使用提供原生 VDPAU 支持的 GPU(例如使用非自由驱动的 NVIDIA GPU)的用户不受此问题影响。

可以使用 vainfovdpauinfo 检查对 VA-API 和 VDPAU 的支持(两个命令均由同名的 Debian 软件包提供)。

5.2.4. systemd-resolved 被分割成单独的软件包

新的 systemd-resolved 软件包在升级时不会被默认安装。如果您在使用 systemd-resolved 系统服务,请在升级完成后手动安装这一新软件包,并请注意,在安装完该软件包之前,DNS 解析可能无法工作,因为系统中没有该服务。安装该软件包后,会把对 /etc/resolv.conf 的控制权自动交给 systemd-resolved。关于 systemd-resolved 的更多信息,请参考官方文档。注意,systemd-resolved 以前不是,现在也不是 Debian 默认的 DNS 解析程序。如果您未配置您的机器使用 systemd-resolved 作为 DNS 解析程序,则不必进行任何操作。

5.2.5. systemd-boot 被分割成单独的软件包

新的 systemd-boot 软件包在升级时不会被默认安装。如果您在使用 systemd-boot,请手动安装这一新软件包,并请注意,在安装完该软件包之前,系统将使用旧版本的 systemd-boot 作为引导加载器。安装该软件包后,systemd-boot 会被自动配置为该机器的引导加载器。Debian 默认的引导加载器仍然是 GRUB。如果您未配置您的机器使用 systemd-boot 作为引导加载器,则不必进行任何操作。

5.2.6. systemd-journal-remote 不再使用 GnuTLS

可选的 systemd-journal-gatewaydsystemd-journal-remote 服务现在在构建时不再包含 GnuTLS 支持,这意味着两个程序都不再提供 --trust 选项,如果指定了该选项,会产生错误。

5.2.7. bookworm 中的 adduser 的重大变更

adduser 有多项变更。最明显的变化是 --disabled-password--disabled-login 现在是等价的。请阅读 /usr/share/doc/adduser/NEWS.Debian.gz 了解更多细节。

5.2.8. Xen 网络接口的可预测命名

systemd 中网络接口的可预测命名逻辑已得到扩充,现在它可以根据 Xen netfront 设备信息生成稳定的名称。这意味着接口现在具有 enX# 形式的稳定名称,而不再使用以前由内核分配的名称系统。请在升级之后、重新启动之前调整您的系统。您可以在 NetworkInterfaceNames 维基页面上找到更多信息。

5.2.9. dash 对“^”的处理方式的变更

在 Debian 中默认提供系统 shell /bin/shdash 现在将 ^ 视为字面意义上的字符,这也是一直以来符合 POSIX 标准的行为。这意味着在 bookworm 中 [^0-9] 的意思不再是除了 0 到 9,而是0 到 9 和 ^

5.2.10. netcat-openbsd 支持抽象套接字

通过网络连接读写数据的 netcat 工具支持抽象套接字,并会在某些情况下默认使用它。

默认情况下,netcatnetcat-traditional 提供。但是,如果 netcatnetcat-openbsd 软件包提供,而您使用 AF_UNIX 套接字,则这一默认设置将生效。这种情况下,nc 命令的 -U 选项将会把以 @ 开头的参数解释为请求一个抽象套接字,而不是当前目录下以 @ 开头的一个文件。这可能会产生安全问题,因为文件权限不能用于控制对抽象套接字的访问。您可以通过在文件名之前加 ./ 或指定绝对路径的方式继续使用以 @ 开头的文件名。

5.3. 过时与废弃内容

5.3.1. 值得注意的过时软件包

以下是已知的和值得注意的过时软件包的列表(有关过时软件包的描述,请参阅第 4.8 节 “过时的软件包”)。

过时的软件包包括:

  • libnss-ldap 软件包已从 bookworm 移除。它的功能已由 libnss-ldapdlibnss-sss 代替。

  • libpam-ldap 软件包已从 bookworm 移除。它已被 libpam-ldapd 取代。

  • fdflush 软件包已从 bookworm 移除。请使用 util-linux 中的 blockdev --flushbufs 命令代替它。

  • libgdal-perl 软件包已从 bookworm 移除,因为上游已经不再支持 GDAL 的 Perl 绑定。如果您需要 GDAL 的 Perl 支持,您可以迁移到由 Geo::GDAL::FFI 软件包提供的 FFI 接口,在 CPAN 中可以找到。您需要按照 BookwormGdalPerl 维基页面中标明的步骤编译您自己的二进制文件。

5.3.2. bookworm 的废弃组件

随着下一个版本 Debian 13(代号为 Trixie)的发布,某些功能将被弃用。用户需要迁移到其他替代方案,以防止在更新到 Debian 13 时出现问题。

这包括以下特性:

  • NSS 服务 gw_name 的开发已于 2015 年停止。与之对应的软件包 libnss-gw-name 可能在未来的 Debian 发布版本中被移除。上游开发者建议使用 libnss-myhostname 代替它。

  • dmraid 上游自 2010 年年底之后就没有任何活动,在 Debian 中的软件包也处于苟延残喘的状态。bookworm 将会是包含该软件包的最后一个发布版本,所以如果您正在使用 dmraid,请做好相应的计划。

  • request-tracker4 在此发布版本中已被 request-tracker5 取代,并将在未来的发布版本中被移除。我们建议您在此发布版本的生命周期内计划从 request-tracker4 迁移到 request-tracker5。

  • isc-dhcp 套件已被 ISC 废弃Debian 维基有一个可替代的实现列表,请访问 DHCP 客户端DHCP 服务器页面获取最新列表。如果您使用 NetworkManagersystemd-networkd,那么您可以安全地移除 isc-dhcp-client 软件包,因为前两个软件包都提供了各自的实现。如果您使用 ifupdown 软件包,您可以尝试使用 udhcpc 作为替代品。ISC 推荐使用 Kea 软件包作为 DHCP 服务器的替代品。

    安全团队将会在 bookworm 的生命周期内支持 isc-dhcp 软件包,但是该软件包在下个稳定版本中将可能不受支持,请阅读缺陷 #1035972(isc-dhcp 支持已结束)以了解更多信息。

5.4. 已知的严重缺陷

虽然 Debian 在准备好后发布,不幸的是,这并不意味着不存在已知的缺陷。作为发布过程的一部分,所有严重程度为 serious 及以上的缺陷都受到发布团队的密切跟踪,所以您可以在 Debian 缺陷跟踪系统中找到在 bookworm 发布过程的最后阶段被标记为“已忽略”的缺陷概览。截至发布时,有以下值得在本文档中提及的缺陷影响 bookworm:

缺陷编号软件包(源码包或二进制包)描述
1032240akonadi-backend-mysqlakonadi server fails to start since it cannot connect to mysql database
1032177faketimefaketime doesn't fake time (on i386)
918984src:fuse3provide upgrade path fuse -> fuse3 for bookworm
1016903g++-12tree-vectorize: Wrong code at O2 level (-fno-tree-vectorize is working)
1020284git-daemon-runfails to purge: deluser -f: Unknown option: f
919296git-daemon-runfails with 'warning: git-daemon: unable to open supervise/ok: file does not exist'
1034752src:gluegen2embeds non-free headers
1036256src:golang-github-pin-tftpFTBFS in testing: dh_auto_test: error: cd _build && go test -vet=off -v -p 8 github.com/pin/tftp github.com/pin/tftp/netascii returned exit code 1
1036575groonga-binmissing Depends: libjs-jquery-flot, libjs-jquery-ui
1036041src:grub2upgrade-reports: Dell XPS 9550 fails to boot after bullseye to bookworm upgrade - grub/bios interaction bug?
558422grub-pcupgrade hangs
913916grub-efi-amd64UEFI boot option removed after update to grub2 2.02~beta3-5+deb9u1
924151grub2-commonwrong grub.cfg for efi boot and fully encrypted disk
925134grub-efi-amd64grub-efi-amd64-signed: doesn't mount cryptodisk
945001grub-efi-amd64GRUB-EFI messes up boot variables
965026grub-emugrub-emu hangs linux console when run as root
984760grub-efi-amd64upgrade works, boot fails (error: symbol `grub_is_lockdown` not found)
1036263src:guestfs-toolsFTBFS in testing: make[6]: *** [Makefile:1716: test-suite.log] Error 1
916596iptablesiptables.postinst failure on link creation
919058itstoolits-tools: crashes when freeing xmlDocs
1028416kexec-toolssystemctl kexec doesn't shutdown system properly and corrupts mounted filesystems
935182libreoffice-coreConcurrent file open on the same host results file deletion
994510libunwind8libunwind8 abuses setcontext() causing SIGSEGV on i386 with glibc >= 2.32
1036755src:linux6.1.26 <= x < 6.1.30 breaks applications using mmap(MAP_32BIT) [affects ganeti]
1036580src:llvm-defaultsplease add some Breaks for smoother upgrades from bullseye
1036359elpa-markdown-toccrashes with (wrong-type-argument consp nil)
1032647nvidia-driverIntermittent black screen after updating to 525.89.02-1
1029342openjdk-17-jre-headlessjexec: can't locate java: No such file or directory
1035798libphp8.2-embeddoes not ship SONAME link /usr/lib/libphp.so -> libphp8.2.so
1034993software-properties-qtmissing Breaks+Replaces for software-properties-kde when upgrading from bullseye
1036388sylpheedaccount reset when mail is checked
1036424sylpheedreplying to an email you sent doesn't set account accordingly
994274src:syslinuxFTBFS with gnu-efi 3.0.13
1031152system-config-printerunlock button in system-config-printer provides no elevated permissions dialog
975490u-boot-sunxiA64-Olinuxino-eMMC boot stuck at "Starting kernel ..."
1034995python-is-python3missing Breaks+Replaces for python-dev-is-python2 when upgrading from bullseye
1036881whitedunesegfaults
1036601xenstore-utilsmissing Depends: xen-utils-common
1036578python3-yadedoes not ship a python module