5. trixie 中需要注意的问题

Sometimes, changes introduced in a new release have side-effects we cannot reasonably avoid, or they expose bugs somewhere else. This section documents issues we are aware of. Please also read the errata, the relevant packages' documentation, bug reports, and other information mentioned in 扩展阅读.

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

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

5.1.1. openssh-server no longer reads ~/.pam_environment

The Secure Shell (SSH) daemon provided in the openssh-server package, which allows logins from remote systems, no longer reads the user's ~/.pam_environment file by default; this feature has a history of security problems and has been deprecated in current versions of the Pluggable Authentication Modules (PAM) library. If you used this feature, you should switch from setting variables in ~/.pam_environment to setting them in your shell initialization files (e.g. ~/.bash_profile or ~/.bashrc) or some other similar mechanism instead.

Existing SSH connections will not be affected, but new connections may behave differently after the upgrade. If you are upgrading remotely, it is normally a good idea to ensure that you have some other way to log into the system before starting the upgrade; see 准备故障恢复.

5.1.2. OpenSSH no longer supports DSA keys

Digital Signature Algorithm (DSA) keys, as specified in the Secure Shell (SSH) protocol, are inherently weak: they are limited to 160-bit private keys and the SHA-1 digest. The SSH implementation provided by the openssh-client and openssh-server packages has disabled support for DSA keys by default since OpenSSH 7.0p1 in 2015, released with Debian 9 ("stretch"), although it could still be enabled using the HostKeyAlgorithms and PubkeyAcceptedAlgorithms configuration options for host and user keys respectively.

The only remaining uses of DSA at this point should be connecting to some very old devices. For all other purposes, the other key types supported by OpenSSH (RSA, ECDSA, and Ed25519) are superior.

As of OpenSSH 9.8p1 in trixie, DSA keys are no longer supported even with the above configuration options. If you have a device that you can only connect to using DSA, then you can use the ssh1 command provided by the openssh-client-ssh1 package to do so.

In the unlikely event that you are still using DSA keys to connect to a Debian server (if you are unsure, you can check by adding the -v option to the ssh command line you use to connect to that server and looking for the "Server accepts key:" line), then you must generate replacement keys before upgrading. For example, to generate a new Ed25519 key and enable logins to a server using it, run this on the client, replacing username@server with the appropriate user and host names:

$ ssh-keygen -t ed25519
$ ssh-copy-id username@server

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

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

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

5.2.2. 安全支持上的局限性

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

备注

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

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

Debian 13 includes several browser engines which are affected by a steady stream of security vulnerabilities. The high rate of vulnerabilities and partial lack of upstream support in the form of long term branches make it very difficult to support these browsers and engines with backported security fixes. Additionally, library interdependencies make it extremely difficult to update to newer upstream releases. Applications using the webkit2gtk source package (e.g. epiphany) are covered by security support, but applications using qtwebkit (source package qtwebkit-opensource-src) are not.

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

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

5.2.2.2. 基于 Go 和 Rust 的软件包

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

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

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

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

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

If you need to install a Python library module (or version) that isn't packaged in Debian, we recommend installing it into a virtualenv, where possible. You can create virtualenvs with the venv Python stdlib module (in the python3-venv Debian package) or the virtualenv Python 3rd-party tool (in the virtualenv Debian package). For example, instead of running pip install --user foo, run: mkdir -p ~/.venvs && python3 -m venv ~/.venvs/foo && ~/.venvs/foo/bin/python -m pip install foo to install it in a dedicated virtualenv.

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

5.2.4. 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)的用户不受此问题影响。

Support for VA-API and VDPAU can be checked with vainfo and vdpauinfo (each provided in a Debian package of the same name).

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

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

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

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

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

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

5.2.8. bookworm 中的 adduser 的重大变更

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

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

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

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

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

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

The netcat utility for reading and writing data across network connections supports abstract sockets (see unix.7.html#Abstract_sockets, and uses them by default in some circumstances.

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

5.3. 过时与废弃内容

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

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

过时的软件包包括:

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

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

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

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

5.3.2. trixie 的废弃组件

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

这包括以下特性:

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

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

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

  • The isc-dhcp suite has been deprecated by the ISC. The Debian Wiki has a list of alternative implementations, see the DHCP Client and DHCP Server pages for the latest. If you are using NetworkManager or systemd-networkd, you can safely remove the isc-dhcp-client package as they both ship their own implementation. If you are using the ifupdown package, you can experiment with udhcpc as a replacement. The ISC recommends the Kea package as a replacement for DHCP servers.

    The security team will support the isc-dhcp package during the bookworm lifetime, but the package will likely be unsupported in the next stable release, see bug #1035972 (isc-dhcp EOL'ed) for more details.

5.4. 已知的严重缺陷

Although Debian releases when it's ready, that unfortunately doesn't mean there are no known bugs. As part of the release process all the bugs of severity serious or higher are actively tracked by the Release Team, so an overview of those bugs that were tagged to be ignored in the last part of releasing trixie can be found in the Debian Bug Tracking System. The following bugs were affecting trixie at the time of the release and worth mentioning in this document:

缺陷编号

软件包(源码包或二进制包)

描述

1032240

akonadi-backend-mysql

akonadi server fails to start since it cannot connect to mysql database

1032177

faketime

faketime doesn't fake time (on i386)

918984

src:fuse3

provide upgrade path fuse -> fuse3 for bookworm

1016903

g++-12

tree-vectorize: Wrong code at O2 level (-fno-tree-vectorize is working)

1020284

git-daemon-run

fails to purge: deluser -f: Unknown option: f

919296

git-daemon-run

fails with 'warning: git-daemon: unable to open supervise/ok: file does not exist'

1034752

src:gluegen2

embeds non-free headers