Debian 11 (bullseye), 64-bit PC 的发行说明 --------------------------------------------------------------------- Debian 文档项目 (https://www.debian.org/doc/)     本文档是自由软件;您可以在自由软件基金会发布的 GNU 通用公共许可证 的条款下重新发布或修改它;您应当使用该许可证的第二版本。     本程序发布的目的是希望它对您有用,但没有任何担保,甚至不保证它有 经济价值和适合特定用途。请查阅 GNU 通用公共许可证以获得更多细节。 您应当在收到本程序的同时也收到了一份 GNU 通用公共许可证的副本;如     果没有收到,请给自由软件基金会写信。地址是:51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 协议文本可以在 https://www.gnu.org/licenses/gpl-2.0.html (https:/     /www.gnu.org/licenses/gpl-2.0.html) 和 Debian 系统中的 /usr/share /common-licenses/GPL-2 找到。 --------------------------------------------------------------------- 目录 1. 简介 1.1. 报告文档错误 1.2. 贡献升级报告 1.3. 本文档的源文件 2. Debian 11 的新变化 2.1. 支持的架构 2.2. 这次发布中有什么新变化? 2.2.1. 桌面和知名软件包 2.2.2. 无驱动扫描和打印 2.2.3. 新的通用 open 命令 2.2.4. 控制组 v2 2.2.5. 持久化 systemd 日志 2.2.6. 新的 Fcitx 5 输入法 2.2.7. 来自 Debian Med Blend 团队的新闻 2.2.8. 内核 exFAT 支持 2.2.9. 改进的 man page 翻译 2.2.10. 对 init 系统替代品的支持的改进 2.2.11. Initial availability of the Bazel build system 3. 安装系统 3.1. 安装系统有哪些新特性? 3.1.1. 帮助安装固件 3.1.2. 自动安装 3.2. 云服务安装 3.3. 容器和虚拟机映像 4. 从 Debian 10(buster)升级 4.1. 升级前的准备 4.1.1. 备份数据和配置文件 4.1.2. 提前告知用户 4.1.3. 准备服务停机 4.1.4. 准备故障恢复 4.1.5. 为升级准备安全环境 4.2. 从“纯净的” Debian 系统开始 4.2.1. 升级至 Debian 10(buster) 4.2.2. 移除非 Debian 软件包 4.2.3. 升级至最新的小版本更新 4.2.4. 准备软件包数据库 4.2.5. 移除过时的软件包 4.2.6. 清理配置文件残留 4.2.7. security 区 4.2.8. proposed-updates 区 4.2.9. 非官方源 4.2.10. 禁用 APT pinning 4.2.11. 检查包状态 4.3. 准备 APT source-list 文件 4.3.1. 添加互联网 APT 源 4.3.2. 添加本地镜像 APT 源 4.3.3. 从光学介质中添加 APT 源 4.4. 升级软件包 4.4.1. 记录会话 4.4.2. 更新软件包列表 4.4.3. 确保您有足够的空间升级 4.4.4. 最小系统升级 4.4.5. 升级系统 4.5. 升级期间可能遇到的问题 4.5.1. Dist-upgrade 失败,显示“无法立即配置” 4.5.2. 预期的删除 4.5.3. 冲突或预依赖循环 4.5.4. 文件冲突 4.5.5. 配置文件变化 4.5.6. 将会话切换到控制台 4.6. 升级内核与相关包 4.6.1. 安装内核元软件包 4.7. 为下个发布版本做准备 4.7.1. 清理已删除的软件包 4.8. 过时的软件包 4.8.1. 过渡哑包 5. bullseye 中需要注意的问题 5.1. 升级到 bullseye 时可能出现的问题 5.1.1. 用于 Intel GPU 的新 VA-API 默认驱动 5.1.2. XFS 文件系统不再支持 barrier/nobarrier 选项 5.1.3. 安全更新仓库的布局变化 5.1.4. 密码哈希默认使用 yescrypt 5.1.5. NSS NIS 和 NIS+ 支持需要新软件包 5.1.6. Unbound 对配置文件片段的处理 5.1.7. rsync 的废弃参数 5.1.8. Vim 插件处理 5.1.9. OpenStack 和 cgroups v1 5.1.10. OpenStack API 策略文件 5.1.11. 升级时 sendmail 将暂时停机 5.1.12. FUSE 3 5.1.13. GnuPG 选项文件 5.1.14. Linux 默认启用用户名字空间 5.1.15. Linux 默认禁用无特权的 bpf() 调用 5.1.16. redmine 在 bullseye 中缺失 5.1.17. Exim 4.94 5.1.18. SCSI 设备探测是非确定性的 5.1.19. rdiff-backup 需要服务器和客户端同步更新 5.1.20. Intel CPU 微码问题 5.1.21. 涉及 libgc1c2 的升级需要执行两次 5.1.22. fail2ban 无法使用来自 bsd-mailx 的 mail 工具发送电子 邮件 5.1.23. 升级过程中无法建立新的 SSH 连接 5.1.24. Open vSwitch upgrade requires interfaces(5) change 5.1.25. 升级后在重启前需要做的事 5.2. 升级过程之外的注意事项 5.2.1. 安全支持上的局限性 5.2.2. 不使用鼠标来访问 GNOME 设置程序 5.2.3. rescue 启动选项在未设置 root 密码时不可用 5.2.4. 32-bit Xen PV guests are not supported 5.3. 废弃与过时内容 5.3.1. 值得注意的过时软件包 5.3.2. bullseye 的废弃组件 5.4. 已知的严重缺陷 6. 关于 Debian 的更多信息 6.1. 扩展阅读 6.2. 获得帮助 6.2.1. 邮件列表 6.2.2. IRC 6.3. 报告 Bug 6.4. 为 Debian 做贡献 A. 在升级前管理您的 buster 系统 A.1. 升级您的 buster 系统 A.2. 检查您的 APT source-list 文件 A.3. 删除过时的配置文件 B. 发行说明的贡献者 索引 术语表 第 1 章 简介     本文档告知 Debian 发行版的用户,版本 11(代号 bullseye)发生的主 要变化。     本发行说明提供如何安全地从版本 10(代号 buster)升级到当前版本的 信息,并告知用户在升级过程中可能会遇到的已知的潜在问题。 您可以在 https://www.debian.org/releases/bullseye/releasenotes     (https://www.debian.org/releases/bullseye/releasenotes) 获取本文 档的最新版本。 小心     注意列出所有已知的问题是不可能的,因此我们根据影响范围和严重程度 选择了一部分问题加以说明。 请注意,我们仅支持从 Debian 的前一版本升级(对于本次发行,即为从     buster 升级)并对其提供说明文档。如果您需要从更早的版本升级,我们 建议您先查看前一版本的发行说明,并先升级到 buster。 1.1. 报告文档错误     我们已尽可能地测试了本文档中描述的所有不同的升级步骤,并预测了用 户可能遇到的所有问题。 尽管如此,如果您认为您发现了本文档的任何错误(不正确或者缺失的信 息),请在错误追踪系统 (https://bugs.debian.org/) 中向     release-notes 软件包提交错误报告。您可以考虑先浏览一遍已有的错误 报告 (https://bugs.debian.org/release-notes) 以避免重复报告同一问 题。如果您有能力对本文档做出贡献,也欢迎您向现有的错误报告添加额 外的信息。 我们鼓励在提交错误报告时提供针对本文档源代码的补丁,并对此表示由     衷感谢。您可以在第 1.3 节 “本文档的源文件”中获知如何获取本文档源 代码。 1.2. 贡献升级报告 我们欢迎用户提供关于从 buster 升级到 bullseye 的任何信息。如果您     愿意分享,请在错误追踪系统 (https://bugs.debian.org/) 中向 upgrade-reports 软件包提交包含您的升级结果的错误报告。我们希望您 压缩提交的所有附件(使用 gzip)。     当您提交升级报告的时候,请包含以下信息: * 在升级前后,软件包数据库的状态:dpkg 的状态数据库在 /var/lib/ dpkg/status,apt 的软件包状态信息在 /var/lib/apt/ extended_states。您应当在升级之前先根据第 4.1.1 节 “备份数据 和配置文件”里的说明进行备份,但您也可以在 /var/backups 中找到     /var/lib/dpkg/status 文件的备份。 * 使用 script 创建的会话日志,如第 4.4.1 节 “记录会话”所述。 * apt 的日志 /var/log/apt/term.log,或 aptitude 的日志 /var/log /aptitude。 注意     在提交错误报告之前,您应该花点时间检查和删除日志中的任何敏感和/或 机密信息,因为这些信息都会被发布在公开的数据库中。 1.3. 本文档的源文件 本文档的源文件格式是 DocBook XML。HTML 版本使用 docbook-xsl 和 xsltproc 生成。PDF 版本使用 dblatex 或 xmlroff 生成。可以从 Debian 文档计划的 Git 仓库获得本发行说明的源文件。您也可以在网页     端 (https://salsa.debian.org/ddp-team/release-notes/) 分别访问这 些文件,并查看它们的变更。请参考 Debian 文档计划的版本控制系统信 息页面 (https://www.debian.org/doc/vcs) 以了解访问 Git 仓库的方法 。 第 2 章 Debian 11 的新变化     维基页面 (https://wiki.debian.org/NewInBullseye) 提供了更多关于这 个主题的信息。 2.1. 支持的架构     下面是 Debian bullseye 官方支持的架构: * 32 位 PC 机(i386)和 64 位 PC 机(amd64) * 64 位 ARM(arm64) * ARM EABI(armel) * ARMv7(EABI 硬浮点 ABI,armhf)     * 小端序 MIPS(mipsel) * 64 位小端序 MIPS(mips64el) * 64 位小端序 PowerPC(ppc64el) * IBM System z(s390x)     您可以在 Debian 移植页面 (https://www.debian.org/ports/) 阅读更多 的关于您的架构的移植状态和移植细节的信息。 2.2. 这次发布中有什么新变化? Debian 的这次发行再次带来了比上一版本 buster 更多的软件;本次发行 包括 11294 个新软件包,软件包的总数达到了 59551 个。这个发行版的 多数软件包得到了更新:更新了 42821 个软件包(占 buster 软件包总数     的 72%)。而且,由于各种原因,有相当数量的软件包(9519 个,占 buster 软件包总数的 16%)从这次发行中被删除了。您将不会看到这些包 有任何更新,而且在包管理软件中它们会被标记为“过时的”;参见第 4.8  节 “过时的软件包”。 2.2.1. 桌面和知名软件包 如往常一样,Debian 也提供了多个桌面程序和环境。提供的桌面环境包括     GNOME 3.38,KDE Plasma 5.20,LXDE 11,LXQt 0.16,MATE 1.24,以及 Xfce 4.16。     生产力应用也得到了升级,包括办公套件: * LibreOffice 已升级到 7.0 版;     * Calligra 已升级到 3.2 版; * GNUcash 已升级到 4.4 版;     这次发行包含了许多软件的更新,其中包括: +---------------------------------------------------------------+ | 软件包 |在 10(buster)中 |在 11(bullseye)中 | | | 的版本 | 的版本 | |-----------------------+------------------+--------------------| |Apache |2.4.38 |2.4.48 | |-----------------------+------------------+--------------------| |BIND DNS 服务器 |9.11 |9.16 | |-----------------------+------------------+--------------------| |Cryptsetup |2.1 |2.3 | |-----------------------+------------------+--------------------| |Dovecot MTA |2.3.4 |2.3.13 | |-----------------------+------------------+--------------------| |Emacs |26.1 |27.1 | |-----------------------+------------------+--------------------| |Exim 默认邮件服务器 |4.92 |4.94 | |-----------------------+------------------+--------------------| |GNU 编译器套件(默认编 |8.3 |10.2 | |译器) | | | |-----------------------+------------------+--------------------| |GIMP |2.10.8 |2.10.22 | |-----------------------+------------------+--------------------| |GnuPG |2.2.12 |2.2.27 | |-----------------------+------------------+--------------------| |Inkscape |0.92.4 |1.0.2 | |-----------------------+------------------+--------------------| |GNU C 函数库 |2.28 |2.31 | |-----------------------+------------------+--------------------| |lighttpd |1.4.53 |1.4.59 | |-----------------------+------------------+--------------------|     |Linux 内核映像 |4.19 系列 |5.10 系列 | |-----------------------+------------------+--------------------| |LLVM/Clang 工具链 |6.0.1 和 7.0.1(默|9.0.1 和 11.0.1(默 | | |认) |认) | |-----------------------+------------------+--------------------| |MariaDB |10.3 |10.5 | |-----------------------+------------------+--------------------| |Nginx |1.14 |1.18 | |-----------------------+------------------+--------------------| |OpenJDK |11 |11 | |-----------------------+------------------+--------------------| |OpenSSH |7.9p1 |8.4p1 | |-----------------------+------------------+--------------------| |Perl |5.28 |5.32 | |-----------------------+------------------+--------------------| |PHP |7.3 |7.4 | |-----------------------+------------------+--------------------| |Postfix MTA |3.4 |3.5 | |-----------------------+------------------+--------------------| |PostgreSQL |11 |13 | |-----------------------+------------------+--------------------| |Python 3 |3.7.3 |3.9.1 | |-----------------------+------------------+--------------------| |Rustc |1.41(armel则为 |1.48 | | |1.34) | | |-----------------------+------------------+--------------------| |Samba |4.9 |4.13 | |-----------------------+------------------+--------------------| |Vim |8.1 |8.2 | +---------------------------------------------------------------+ 2.2.2. 无驱动扫描和打印 使用 CUPS 打印以及使用 SANE 扫描对于越来越多的硬件型号已经可以实     现无需任何驱动程序(通常是非自由驱动程序)即可正常操作,尤其是过 去五年以来出现在市场上的新设备。 2.2.2.1. CUPS 和无驱动打印 使用以太网或无线网络连接的现代打印机已经可以使用无驱动打印功能 (https://wiki.debian.org/CUPSQuickPrintQueues) ,由 CUPS 和 cups-filters 软件包提供支持,此功能已在 Debian buster 发行注记 (https://www.debian.org/releases/buster/amd64/release-notes/ ch-whats-new.html#driverless-printing) 中描述。Debian 11 “     bullseye” 提供了新软件包 ipp-usb;它使用许多现代打印机所支持的、 供应商中立的 IPP-over-USB (https://wiki.debian.org/ CUPSDriverlessPrinting#ippoverusb) 协议,且 cups-daemon 推荐安装 该软件包。它使得 USB 设备可被视作网络设备,以将无驱动打印扩展至包 括 USB 连接的打印机。详情在维基上 (https://wiki.debian.org/ CUPSDriverlessPrinting#ipp-usb) 有更多描述。 在 ipp-usb 软件包中包含的 systemd 服务文件将在使用 USB 的打印机连     接到系统时启动 ipp-usb 守护程序,以使其可用于打印任务。默认情况下 cups-browsed 软件包应当可以自动完成配置,或者可以手动设置本地无驱 动打印队列 (https://wiki.debian.org/SystemPrinting) 。 2.2.2.2. SANE 和无驱动扫描 官方的 SANE 无驱动后端在 libsane1 软件包中由 sane-escl 提供。另有 一独立开发的无驱动后端 sane-airscan。两个后端均可使用 eSCL 协议     (https://wiki.debian.org/SaneOverNetwork#escl) ,但 sane-airscan 另外也可使用 WSD (https://wiki.debian.org/SaneOverNetwork#wsd) 协 议。用户应该考虑在系统上同时安装两个后端。 eSCL 和 WSD 均为网络协议。因此,它们在设备是 IPP-over-USB 设备的     情况下也可经由 USB 连接生效(参见上文)。请注意 libsane1 推荐安装 ipp-usb 软件包。在软件包已安装的情况下,合适的设备可以在使用 USB 端口连接到系统的同时自动设置使用无驱动后端。 2.2.3. 新的通用 open 命令 新增加的 open 命令将作为 xdg-open(默认)或者 run-mailcap 的别名 出现,具体实现则由 update-alternatives(1) (https://     manpages.debian.org//bullseye/dpkg/update-alternatives.1.html) 系 统管理。它旨在作为命令行交互工具,帮助用户使用默认的应用程序打开 文件;所使用的程序按照具体情况可以是图形界面程序。 2.2.4. 控制组 v2 在 bullseye 中,systemd 默认使用控制组 v2(cgroupv2),它提供了统     一的资源控制层级架构。如果有需要,可以使用内核命令行参数重新启用 旧有的 cgroups;请参见第 5.1.9 节 “OpenStack 和 cgroups v1” 一节 中适用于 OpenStack 的注记。 2.2.5. 持久化 systemd 日志 在 bullseye 中的 systemd 默认启用了持久日志的功能,日志文件存放于 /var/log/journal/。请参见 systemd-journald.service(8) (https://     manpages.debian.org//bullseye/systemd/ systemd-journald.service.8.html) 以了解细节;请注意 Debian 中的日 志除了默认的 systemd-journal 组外,还可以被 adm 用户组内的成员阅 读。 这项改动应该不会对任何已有的传统日志守护程序(例如 rsyslog)产生     任何干扰,但是不依赖这些守护程序所提供的特别功能的用户应当考虑将 传统日志程序卸载并切换到仅使用新的 systemd 日志工具。 2.2.6. 新的 Fcitx 5 输入法 Fcitx 5 是用于中文、日语、韩语和其它许多语言的一个输入法。它是     buster 提供的 Fcitx 4 的后续版本。新版本增加了对 Wayland 的支持并 改进了扩展支持。您可以在维基页面上 (https://wiki.debian.org/I18n/ Fcitx5) 阅读更多信息以及从旧版本迁移的方法。 2.2.7. 来自 Debian Med Blend 团队的新闻 Debian Med 团队正在积极打包用于研究病毒序列以及与流行病学研究相关     的软件以抗击 COVID-19 和疫情大流行。下一个发行周期中,团队将继续 进行这项任务,并专注于打包可以应用于这两个领域的机器学习工具。     除了添加生命科学和医药领域的新软件包之外,许多已有的软件包也得到 了持续集成支持。 一些性能关键的应用程序现在受益于 SIMD Everywhere (https://     wiki.debian.org/SIMDEverywhere) 的实现。该软件库可以帮助软件包既 支持更多的硬件平台(尤其是 arm64),又受益于处理器所提供的向量运 算扩展带来的性能提升,例如 amd64 上的 AVX,或 arm64 上的 NEON。 如需安装由 Debian Med 团队维护的软件包,您可以安装名为 med-* 的元     软件包;在 Debian bullseye 中,其版本号为 3.6.x。您还可以访问 Debian Med 任务页面 (https://blends.debian.org/med/tasks) 以查看 Debian 中全部可用的生物和医疗软件。 2.2.8. 内核 exFAT 支持 bullseye 是第一个提供支持 exFAT 文件系统的 Linux 内核的发行版本, 且它默认使用该实现挂载 exFAT 文件系统。因此,用户不再需要使用     exfat-fuse 软件包所提供的用户空间文件系统实现。如果您要继续使用用 户空间文件系统的实现,您需要在挂载 exFAT 文件系统时直接调用 mount.exfat-fuse 命令。 创建和检查 exFAT 文件系统的工具位于 exfatprogs 软件包,它由 Linux 内核 exFAT 实现的作者编写。由已有的 exfat-utils 软件包提供的独立     实现仍然可用,但它不能与新的实现共同安装在系统上。我们推荐您迁移 到使用 exfatprogs 软件包,尽管您需要注意并处理两者可能不互相兼容 的命令行选项。 2.2.9. 改进的 man page 翻译 部分项目,例如 systemd、 util-linux、 OpenSSH 和 Mutt 的部分语言     的手册页,例如法语、西班牙语和马其顿语,得到了明显改进。欲获得此 项改进,请安装 manpages-xx(其中 xx 是您所需的自然语言的代码)。     在 bullseye 的生命周期中,进一步的翻译改进将会通过 backports 仓库 提供。 2.2.10. 对 init 系统替代品的支持的改进 Debian 的默认 init 系统是 systemd。在 bullseye 中,支持了数个 init 系统的替代品(例如 System V 风格的 init 以及 OpenRC),且绝     大多数桌面环境现在可以很好地在运行 init 替代品的系统上工作。关于 如何切换 init 系统的细节(以及在哪里可以就运行 systemd 以外的 init 过程中遇到的问题获得帮助),可以在 Debian 维基 (https:// wiki.debian.org/Init) 上获得。 2.2.11. Initial availability of the Bazel build system The Bazel build system (https://bazel.build/) is available in Debian starting with this release. This is a bootstrap variant that doesn't include local versions of the extended Bazel ecosystem. However, the current package does provide identical     functionality to core upstream Bazel, with the advantage of convenient Debian package management for the installation. While building Debian packages is not currently recommended yet, any software that supports Bazel builds should build normally using the bazel-bootstrap package. This includes build-time downloads of required dependencies. The Debian Bazel Team (https://salsa.debian.org/bazel-team/meta) is working to package an extensible version of Bazel for future Debian releases. This extensible version will allow additional     components of the Bazel ecosystem to be included as native Debian packages. More importantly, this version will allow Debian packages to be built using Bazel. Contributions to the team are welcome! 第 3 章 安装系统     Debian 安装程序是 Debian 官方的安装系统。它提供了多种安装方式。实 际可用的安装方式取决于您的处理器架构。     您可以在 Debian 网站 (https://www.debian.org/releases/bullseye/ debian-installer/) 上找到 bullseye 的安装程序映像和安装手册。     安装手册也可以在 Debian 官方 DVD(CD/蓝光光碟)的第一张盘上找到, 路径是:     /doc/install/manual/语言/index.html 您可能希望阅读勘误表 (https://www.debian.org/releases/bullseye/     debian-installer/index#errata) ,以了解 Debian 安装程序的已知问题 列表。 3.1. 安装系统有哪些新特性?     自从 Debian 安装程序上一次随 Debian 10 发布以来,我们进行了大量的 开发工作,以提供更好的硬件支持及各种激动人心的新功能与改进。 如果您想对从 buster 开始各项变更的详细情况有个大致的了解,请访问     Debian 安装程序的新闻历史 (https://www.debian.org/devel/ debian-installer/News/) 并阅读 bullseye 的 beta 和 RC 版本的发布 公告。 3.1.1. 帮助安装固件 越来越多的外设需要加载固件,作为硬件初始化过程的一部分。为了帮助     解决此问题,安装程序有了一项新特性。如果某些已安装的硬件需要安装 固件,安装程序将尝试将它们安装到系统中。这是基于从硬件标识符到固 件文件名的映射实现的。 这项新特性仅限于包含固件的非官方安装程序映像(参见 https:// www.debian.org/releases/bullseye/debian-installer/#     firmware_nonfree (https://www.debian.org/releases/bullseye/ debian-installer/#firmware_nonfree) )。这些固件通常不符合 Debian 自由软件指导方针(DFSG),所以无法在 Debian 主软件源中分发。 如果您遇到了和固件缺失有关的问题,请阅读安装手册中的专门章节     (https://www.debian.org/releases/bullseye/amd64/ch06s04# completing-installed-system) 。 3.1.2. 自动安装 一些改动意味着安装程序对使用预配置文件进行自动安装的支持将有所变     化。这意味着您现有的可以在 buster 安装程序中正常使用的预配置文件 不一定能在未经修改的情况下和新的安装程序搭配使用。     安装手册 (https://www.debian.org/releases/bullseye/installmanual) 更新了一个单独的附录,包含使用预配置文件的详细文档。 3.2. 云服务安装 Debian cloud team (https://wiki.debian.org/Teams/Cloud) (云团队 )为部分流行的云服务提供商直接提供 Debian bullseye 的系统,包括:     * OpenStack * Amazon Web Services * Microsoft Azure 云映像将使用 cloud-init 提供自动化的钩子,并使用特别优化过的内核     软件包和 grub 配置达到快速建立实例的效果。在需要的场合,映像将支 持不同的硬件架构;同时云团队致力于支持云服务提供商提供的所有功能 。 云团队将提供映像更新,直至 bullseye 的长期支持周期结束。新映像通     常在每个小版本更新发布时或者关键软件包的安全更新之后发布。云团队 的完整支持策略可以在这里 (https://wiki.debian.org/Cloud/ ImageLifecycle) 找到。     如需了解更多详情,请参考 cloud.debian.org (https:// cloud.debian.org/) 和维基页面 (https://wiki.debian.org/Cloud/) 。 3.3. 容器和虚拟机映像 可以在 Docker Hub (https://hub.docker.com/_/debian) 找到多种架构     的 Debian bullseye 容器映像。除了标准映像之外,另有提供剪裁版(“ slim”版本)以便缩减磁盘使用量。     用于 Hashicorp Vagrant VM manager 的虚拟机映像在 Vagrant Cloud (https://app.vagrantup.com/debian) 处发布。 第 4 章 从 Debian 10(buster)升级 4.1. 升级前的准备 我们建议您在升级前阅读第 5 章 bullseye 中需要注意的问题。它描述的     潜在问题与升级过程没有直接联系,但您仍可能需要在开始前了解这些信 息。 4.1.1. 备份数据和配置文件 在升级系统前,强烈建议您进行一次完整的备份,或者至少备份您不愿意     丢失的数据和配置信息。升级工具和流程是非常可靠的,但升级过程中的 硬件错误可能会对您的系统造成严重损害。 您需要备份的内容主要包括 /etc、/var/lib/dpkg、/var/lib/apt/     extended_states 下的文件,以及 dpkg --get-selections "*" 命令的输 出(命令行中的引号必须要有)。如果您使用 aptitude 来管理系统上的 软件包,您还需要备份 /var/lib/aptitude/pkgstates。 升级过程本身不会修改 /home 下的任何内容。但某些程序(比如部分 Mozilla 套件,以及 GNOME 和 KDE 桌面环境)会在新版本的程序第一次     启动时用新的默认值来覆盖现有的用户设置。做为一种预防措施,您也许 想备份用户目录下的隐藏文件和目录(“dotfiles”)。该备份有助于您恢 复或者重建原有设置。另外,您可能还需要把该事项通知给用户。     任何软件包安装操作都必须以超级用户权限执行,您可以以 root 身份登 录,或使用 su 或者 sudo 来获取必要的访问权限。     升级需要几个前提条件,您应当在实际升级前检查它们。 4.1.2. 提前告知用户 提前通知所有用户您正在计划的任何升级是明智的决定,虽然通过 ssh 连     接访问您系统的用户可能在升级过程中不会注意到什么东西,而且应该可 以继续正常工作。     如果您希望采取更多的预防措施,请在升级前备份或者卸载 /home 分区。     当升级到 bullseye 时您需要进行内核升级,所以将需要重启。一般来说 ,这将在升级完成后进行。 4.1.3. 准备服务停机 系统提供的服务可能与升级包含的软件包相关联。如果存在这种情况,请     注意,在升级期间,当相关软件包被更换和配置时,这些服务将被停止。 在此期间,这些服务将无法使用。 这些服务的精确停机时间将根据系统中升级的软件包数量而有所不同,并     且还要包括系统管理员在软件包升级过程中回答任何配置问题的时间。请 注意,如果升级过程无人值守,并且系统在升级过程中请求输入,则很可 能在很长时间内无法使用^[1]服务。 如果正在升级的系统为您的用户或网络^[2]提供关键服务,则可以使用最 小系统升级减少停机时间,如第 4.4.4 节 “最小系统升级”所述,之后是     内核升级和重新启动,然后升级与关键服务关联的软件包。在执行第  4.4.5 节 “升级系统”所描述的完整升级前升级这些软件包。这样,您可 以确保这些关键服务在全面升级的过程中运行并可用,并减少其停机时间 。 4.1.4. 准备故障恢复     尽管 Debian 尝试确保您的系统始终可引导,但您在升级后的重启过程中 仍有可能遇到问题。发行说明的这一章和下一章记录了已知的潜在问题。     因此,当您的系统重启失败(或对于远程管理的系统来说,无法连接网络 )时,请确保您能够将其恢复。 如果您通过 ssh 远程连接进行升级,则建议您采取必要的预防措施以便通     过远程串口终端来访问该服务器。在升级内核并重新启动后,有可能您将 不得不通过本地控制台修复系统配置。还有,如果系统在升级过程中意外 重启您可能需要使用本地控制台进行修复。 通常我们建议使用 bullseye Debian 安装程序的救援模式进行应急恢复。 使用安装程序的优点是,您可以从众多修复方式中选择最适合您情况的一     种。有关详细信息,请参阅安装指南 (https://www.debian.org/releases /bullseye/installmanual) 第 8 章中的“修复损坏的系统”及 Debian 安 装程序常见问题 (https://wiki.debian.org/DebianInstaller/FAQ) 。 如果上述步骤失败了,您需要采取替代方案来启动您的系统以便访问和修     复它。其中一种选择是使用特制的急救或者 live install (https:// www.debian.org/CD/live/) 镜像。以这些介质引导后,您应该可以挂载您 的根文件系统并 chroot 到它里面来检查并修复问题。 4.1.4.1. initrd 引导时使用调试环境 initramfs-tools 软件包在其生成的 initrd 中包含一个调试 shell^[3]     。如果出现问题,比如 initrd 无法挂载根文件系统,那么您将进入到此 调试 shell 中,其具有一些基本命令可帮助您跟踪问题,并让您有机会修 复它。 需要检查的几个基本项目:/dev 下是否存在正确的设备文件;加载了什么     模块(cat /proc/modules);dmesg 的输出中有关驱动加载的错误信息。 dmesg 的输出还会显示哪个设备文件被指定给哪个磁盘;您还应该将其与 echo $ROOT 的输出进行核对,以确保根文件系统在预想的设备上。 如果您成功修复了问题,输入 exit 会退出调试 shell,并从先前失败的     地方继续启动进程。当然您还需要修复更深层次的问题,并重新生成 initrd,以使下次引导不再失败。 4.1.4.2. systemd 引导时使用调试 shell 如果在 systemd 下启动失败,可以通过更改内核命令行来获取调试性     root shell。如果基本的引导成功,但某些服务无法启动,则向内核参数 添加 systemd.unit=rescue.target 可能会有用。 否则,内核参数 systemd.unit=emergency.target 将在最早可能的时机为     您提供 root shell。但此时,根文件系统还未以读写权限挂载。您必须手 动执行以下操作:     # mount -o remount,rw /     有关在 systemd 下调试启动故障的更多信息,请参见诊断引导问题 (https://freedesktop.org/wiki/Software/systemd/Debugging/) 一文。 4.1.5. 为升级准备安全环境 重要     如果您正在使用某些虚拟专用网络(VPN)服务(例如 tinc),则该服务 可能在整个升级过程中都不可用。请参阅第 4.1.3 节 “准备服务停机”。 为了在远程升级时获得额外的可靠性保障,我们建议您在由 screen 程序     生成的虚拟控制台中执行升级过程。它能帮助您可靠地重新连接机器,并 确保即使远程连接暂时中断,升级过程也不会被打断。 4.2. 从“纯净的” Debian 系统开始 本章中描述的升级过程是针对“纯净的” Debian 稳定版系统的。APT 控制     了您系统上已安装的软件。如果您的 APT 配置加入了 buster 之外的额外 软件源,或者您安装了来自其他版本或第三方来源的软件包,那么为了确 保升级过程可靠,您可能需要事先去除这些可能导致问题的因素。 APT 用于确定应从哪个源下载软件包的主要配置文件是 /etc/apt/ sources.list,但它也可以使用 /etc/apt/sources.list.d/ 目录中的文     件 - 详情见 sources.list(5) (https://manpages.debian.org// bullseye/apt/sources.list.5.html) 。如果您的系统使用多个 source-list 文件,那么您需要确保它们保持一致。 4.2.1. 升级至 Debian 10(buster) 直接从比 10 更旧的 Debian 系统(buster)升级是不受支持的。您可以 使用下面的方式显示您的 Debian 版本:     $ cat /etc/debian_version 请按照 Debian 10 发行说明 (https://www.debian.org/releases/buster /releasenotes) 中的步骤,先升级到 Debian 10。 4.2.2. 移除非 Debian 软件包 下面有两种方法可以查找并非来自 Debian 的已安装软件包,使用 aptitude 或者 apt-forktracer。请注意,它们都不是 100% 准确(例如 ,aptitude 示例将列出曾经由 Debian 提供但不再包含的软件包,例如旧     的内核软件包)。 $ aptitude search '?narrow(?installed, ?not(?origin(Debian)))' $ apt-forktracer | sort 4.2.3. 升级至最新的小版本更新 此步骤假定您的系统已经更新至 buster 的最新小版本。如果您还未这么     做或是不确定具体情况,请按照第 A.1 节 “升级您的 buster 系统”中的 步骤执行。 4.2.4. 准备软件包数据库 在继续升级之前,还应确保软件包数据库已准备就绪。如果您是 aptitude 或 synaptic 等其他软件包管理器的用户,请查看任何待处理的操作。在     包管理器中被计划安装或删除的软件包可能会干扰升级过程。请注意,仅 当您的 APT source-list 文件仍指向 buster 而不是 stable 或 bullseye 时,才能更正此项;请参阅第 A.2 节 “检查您的 APT source-list 文件”。 4.2.5. 移除过时的软件包     在升级前从您的系统中移除过时的软件包是一个好想法。未移除即升级可 能会使升级过程复杂化,且它们因不再得到维护而可能带来安全风险。 4.2.6. 清理配置文件残留 更新过系统后可能残留某些不再使用的配置文件副本、旧版本配置文件、     软件包维护者提供的其他版本等等。从系统中移除这些残留文件可以避免 出现混淆。您可以使用如下命令查找残留文件:     # find /etc -name '*.dpkg-*' -o -name '*.ucf-*' -o -name '*.merge-error' 4.2.7. security 区 对于引用了 security 仓库的 APT source 行,其格式随着版本变更也稍     有变化,从 buster/updates 变更为了 bullseye-security;参见第  5.1.3 节 “安全更新仓库的布局变化”。 4.2.8. proposed-updates 区     如果您已经在 APT source-list 文件中添加了 proposed-updates 区,则 应在尝试升级系统之前将其移除。这是一种减少冲突可能性的预防措施。 4.2.9. 非官方源 如果您的系统上有任何非 Debian 软件包,您应当注意在升级过程中可能 会因为依赖关系冲突而移除这些软件包。如果这些软件包是通过在 APT     source-list 文件中添加额外的软件源进行安装的,您应检查该软件源是 否还提供了针对 bullseye 编译的软件包,并在更改 Debian 软件源的同 时相应地更改这些软件源。 一些用户可能在他们的 buster 系统中安装了 Debian 中已有的软件包的     非官方的向后移植的“更新”版本。升级期间那样的包很有可能引起问题, 因为它们可能会导致文件冲突^[4]。如果确实发生冲突的话,第 4.5 节 “ 升级期间可能遇到的问题”有一些关于如何处理文件冲突的信息。 4.2.10. 禁用 APT pinning 如果您已经设置 APT 从一个非 stable(如 testing)版安装特定的软件 包,您可能必须改变 APT pinning 设置(保存在 /etc/apt/preferences     和 /etc/apt/preferences.d/ 中),以允许将软件包升级至新的 stable 中的版本。如需更多有关 APT pinning 的信息,请参阅 apt_preferences (5) (https://manpages.debian.org//bullseye/apt/ apt_preferences.5.en.html) 。 4.2.11. 检查包状态 不管用什么方法升级,我们都建议您先检查所有软件包的状态,并验证所     有包都处于可升级状态。以下命令会显示任何半安装或是配置失败的包, 还有那些有任何错误状态的包。     # dpkg --audit     您也可以用 aptitude 来检查系统中的所有软件包的状态,也可以使用如 下命令     # dpkg -l | pager     或是     # dpkg --get-selections "*" > ~/curr-pkgs.txt     在升级前移除所有的 hold 状态是很有必要的。如果有任何对升级而言有 重大影响的包处于 hold 状态,升级会失败。     注意 aptitude 使用一种与 apt 以及 dselect 不同的方法来注册 hold 状态的包。您可以用以下命令来识别 aptitude 中处于 hold 状态的包     # aptitude search "~ahold"     如果您想检查 apt 中哪些包设置了 hold 状态,您应当使用     # dpkg --get-selections | grep 'hold$' 如果您在本地更改并重新编译了一个包,且并未重命名它,或是在版本号     中放入新的纪元号(epoch),您就必须将它设为 hold 状态,以防止它被 升级。     apt 中的 “hold” 状态的包可以使用以下命令修改:     # echo 软件包名 hold | dpkg --set-selections     用 install 代替 hold 即可清除 “hold” 状态。 如果有任何需要修复的东西,最好确保您的 APT source-list 文件仍然指     向 buster,就像第 A.2 节 “检查您的 APT source-list 文件”中所解释 的那样。 4.3. 准备 APT source-list 文件 在开始升级之前,您必须重新配置 APT 的 source-list 文件(/etc/apt/     sources.list 以及 /etc/apt/sources.list.d/ 下的文件)以添加用于 bullseye 的源以及在通常情况下移除用于 buster 的源。 APT 将考虑所有已配置的源中包含的所有软件包,并安装具有最高版本号     的软件包,优先考虑文件中的第一个条目。因此,如果您有多个镜像位置 ,请将本地硬盘放在第一位,然后是 CD-ROM,最后是远程镜像。 一个发行版通常既能通过它的代号(如:buster,bullseye)引用,也可 以用它的状态名引用(如:oldstable,stable,testing,unstable)。     引用发行版的代号的好处在于,您绝对不会因为新版本的发布而感到惊讶 ,因此本文使用这种方法。当然,这也意味着您不得不自己关注新版的发 行公告。如果转而使用状态名,一旦有新版发行,您将只会看到一堆可用 的软件包的更新。 Debian 提供了两个公告邮件列表,以帮助您及时了解与 Debian 发布相关 的信息: * 通过订阅 Debian 公告邮件列表 (https://lists.debian.org/     debian-announce/) ,每次 Debian 发布新版本时,您都会收到通知 。例如当 bullseye 从 testing 变为 stable 时。 * 通过订阅 Debian 安全公告邮件列表 (https://lists.debian.org/ debian-security-announce/) ,每次 Debian 发布安全公告时,您都 会收到通知。 4.3.1. 添加互联网 APT 源 在新版安装中,APT 默认使用 Debian APT CDN 服务,该服务确保软件包     自动从网络上离您较近的一个服务器下载。由于这是一项相对较新的服务 ,旧版安装的配置可能仍然指向 Debian Internet 主服务器之一或其中一 个镜像。如果您尚未这样做,建议在 APT 配置中切换为使用 CDN 服务。     要使用 CDN 服务,请在 APT 源配置中添加这样一行(假设您在使用 main 和 contrib):     deb http://deb.debian.org/debian bullseye main contrib     添加新源后,通过在以前存在的 “deb” 行前放置一个井号(#)来禁用它 们。     不过,如果您通过使用在网络上更接近您的特定的镜像得到了更好的结果 ,您仍然可以继续这么做。 Debian 镜像地址可以在 https://www.debian.org/distrib/ftplist     (https://www.debian.org/distrib/ftplist) 找到(参见 “list of Debian mirrors” 一节)。     例如,假设离您最近的 Debian 镜像是 http://mirrors.kernel.org。如 果使用网络浏览器检查该镜像,您会注意到主目录的组织方式如下: http://mirrors.kernel.org/debian/dists/bullseye/main/binary-amd64/...     http://mirrors.kernel.org/debian/dists/bullseye/contrib/binary-amd64/...     要使用给定的镜像配置 APT,请添加类似如下的一行(同样,假设您正在 使用 main and contrib):     deb http://mirrors.kernel.org/debian bullseye main contrib     注意“dists”会隐式添加,而版本名称后的参数则用于将路径扩展到多个目 录。     同样,添加新源后,禁用以前存在的软件源条目。 4.3.2. 添加本地镜像 APT 源     您可能希望修改 APT source-list 文件以使用本地磁盘上的镜像(可能挂 载在 NFS 上),而不是使用远程软件包镜像。     例如,您的软件包镜像可能位于 /var/local/debian/ 下,并且具有如下 的目录结构: /var/local/debian/dists/bullseye/main/binary-amd64/...     /var/local/debian/dists/bullseye/contrib/binary-amd64/...     要让 apt 使用它,需要把这一行添加至 sources.list 文件:     deb file:/var/local/debian bullseye main contrib     注意“dists”会隐式添加,而版本名称后的参数则用于将路径扩展到多个目 录。     添加新源后,通过在 APT source-list 文件中以前存在的软件源条目前放 置一个井号(#)来禁用它们。 4.3.3. 从光学介质中添加 APT 源     如果您只想使用 DVD(或 CD 或蓝光光盘),请在所有 APT source-list 文件中注释掉现有条目,方法是在它们前面放置一个井号(#)。 确保在 /etc/fstab 中有一行允许您挂载 CD-ROM 于 /media/cdrom 挂载     点。例如,假设 /dev/sr0 就是您的 CD-ROM,/etc/fstab 中应该带有一 行:     /dev/sr0 /media/cdrom auto noauto,ro 0 0     注意在第四列 noauto,ro 之间必须没有空格。     要验证设置是否有效,插入一片 CD,尝试运行 # mount /media/cdrom # 这将把 CD 挂载到挂载点     # ls -alF /media/cdrom # 这应该显示 CD 的根目录 # umount /media/cdrom # 这将卸载 CD     下一步,运行:     # apt-cdrom add     每片您所拥有的 Debian 二进制 CD-ROM 都要这么做,以便将每片 CD 的 数据添加至 APT 的数据库。 4.4. 升级软件包     从以前的 Debian 版本升级的推荐方法是使用包管理工具 apt。 注意     apt 被设计用于交互式使用,故不应在脚本中使用。在脚本中,应该使用 apt-get,它具有更适合进行文本处理的稳定输出。     不要忘记挂载所有必需的分区(尤其是根分区和 /usr 分区)为可读写状 态,用以下命令:     # mount -o remount,rw /挂载点 接下来,您应该仔细检查确认 APT 源条目(在 /etc/apt/sources.list 以及 /etc/apt/sources.list.d/ 下的文件)要么指向 “bullseye”,要么 指向 “stable”。不应该有任何源条目指向 buster。     +--------------------------------------------------+ |注意 | | | |CD-ROM 的源有时会指向 “unstable”。尽管这令人困惑,| |但您不应该改变它。 | +--------------------------------------------------+ 4.4.1. 记录会话 强烈推荐您使用 /usr/bin/script 程序来记录升级会话中的交互信息。这     样如果有问题了,您就有一份日志,而且需要的话,它也可以在缺陷报告 中提供准确的信息。要开始记录,输入:     # script -t 2>~/upgrade-bullseye步骤.time -a ~/upgrade-bullseye步骤.script 或是类似命令。如果您必须重新运行 typescript(例如,您必须重新启动     系统),请使用不同的步骤值,以指示您正在记录的升级步骤。不要将输 出文件放在临时目录下,如 /tmp 或 /var/tmp(这些目录下的文件可能会 在升级或重启时被删除)。 Typescript 也可让您复查屏幕上滚动过去的信息。如果您位于系统的文本     用户界面,只要切换至虚拟终端 2(使用 Alt+F2),在登录后,用 less -R ~root/upgrade-bullseye.script 查看文件。     在完成升级后,您可以在提示符下输入 exit 停止 script。 apt 也会把软件包的状态变更记录在 /var/log/apt/history.log,并把终     端输出记录在 /var/log/apt/term.log。dpkg 会额外地把软件包的状态变 更记录在 /var/log/dpkg.log。如果您使用 aptitude,它也会把软件包的 状态变更记录在 /var/log/aptitude。     如果已经对 script 使用了 -t 选项,您就可以用 scriptplay 程序来回 放整个过程:     # scriptreplay ~/upgrade-bullseyestep.time ~/upgrade-bullseyestep.script 4.4.2. 更新软件包列表     首先,需要获取新发行版的可用包列表。执行:     # apt update 注意     apt-secure 的用户可能会在使用 aptitude 或 apt-get 时遇到问题。对 于 apt-get,您可以使用 apt-get update --allow-releaseinfo-change 。 4.4.3. 确保您有足够的空间升级 在升级系统之前,您必须确保当您开始第 4.4.5 节 “升级系统”中的完整 系统升级时,您有足够的硬盘空间。首先,从网络获取的任何需要安装的 软件包都存储在 /var/cache/apt/archives(对于正在下载的文件是 partial/ 子目录)中,因此您必须确保存放 /var/ 目录的文件系统分区     有足够的空间来临时存放下载好的将要安装到系统的软件包。下载后,您 可能在其他文件系统分区中也需要更多的空间,以便安装升级的软件包( 可能包含更大的二进制文件或更多数据)及升级中带入的新包。如果您的 系统没有足够的空间,您可能在最后得到的是一个未能完全升级却又难以 还原的系统。     apt 可以显示有关安装所需磁盘空间的详细信息。在执行升级之前,您可 以通过运行以下命令来查看此估计: # apt -o APT::Get::Trivial-Only=true full-upgrade [ ... ]     升级了 XXX 个软件包,新安装了 XXX 个软件包,要卸载 XXX 个软件包,有 XXX 个软件包未被升级。 需要下载 xx.xMB 的归档。 解压缩后会消耗 AAAMB 的额外空间。 注意     由于下一节将要谈到的问题,在即将开始更新前执行这条命令可能会得到 一个错误。如果那样的话,您需要等到第 4.4.4 节 “最小系统升级”所述 的最小系统升级完成后,再运行这条命令来预估所需的磁盘空间。     如果您没有足够的空间进行升级, apt 将通过类似这样的消息警告您:     E: 您在 /var/cache/apt/archives/ 上没有足够的可用空间。     在这种情况下,请确保事先释放空间。您可以: * 删除以前安装时下载的软件包(位于 /var/cache/apt/archives)。通过 运行 apt clean 来清理软件包缓存,这将会删除所有以前下载过的软件包 文件。 * 删除被遗忘的软件包。如果您曾用 aptitude 或 apt 手动在 buster 中安 装过包,它将会保存手动安装的记录,并且对于由依赖关系拉入的包,在 主包删除时能自动识别为不再需要的并标记为冗余。不会将您手动安装的 包标记为删除。要删除自动安装的、不再使用的软件包,请运行: # apt autoremove 您可以用其它的工具来找出多余的包,例如 deborphan,debfoster 或 cruft。不要盲目地移除那些工具找到的包,尤其是当您使用了激进的非默 认的选项时,很容易产生假阳性结果。强烈推荐您在移除它们之前,手工 核查那些建议移除的包(例如:它们的内容、大小以及描述信息)。 * 删除占用太多空间并且不需要的软件包(您可以在升级后随时重新安装) 。如果您安装了 popularity-contest,则可以使用 popcon-largest-unused 列出占用空间最大的不常使用的软件包。您可以 使用 dpigs(在 debian-goodies 软件包中)或 wajig(运行 wajig size )找到占用最多磁盘空间的软件包。也可以使用 aptitude 找到它们。以 可视模式启动 aptitude,选择视图 → 新建平面软件包列表,按 l 并输入 ~i,按 S 并输入 ~installsize。这将为您提供一个方便的列表。 * 如果不需要的话可以从系统中移除翻译和本地化文件。您可以安装并配置 localepurge 软件包,这样只有一小部分指定的 locale 被保留在系统中 。这将减少 /usr/share/locale 所使用的磁盘空间。 * 将 /var/log/ 下的系统日志临时放到其它系统,或是永久删除。 * 使用临时的 /var/cache/apt/archives:您可以使用其他文件系统中的临 时缓存目录(USB 存储设备,临时硬盘,已在使用的文件系统等等)。     +-----------------------------------------------------+ |注意 | | | |不要使用 NFS,这是因为网络连接可能在升级期间断开。 | +-----------------------------------------------------+ 例如,假设您将 USB 驱动器挂在 /media/usbkey 下: 1. 删除以前安装时下载的包: # apt clean 2. 将 /var/cache/apt/archives 目录复制到 USB 驱动器: # cp -ax /var/cache/apt/archives /media/usbkey/ 3. 将临时缓存目录挂载至当前使用的目录: # mount --bind /media/usbkey/archives /var/cache/apt/archives 4. 升级后,还原 /var/cache/apt/archives 目录: # umount /var/cache/apt/archives 5. 删除留下的 /media/usbkey/archives。 您可以在挂载于系统中的任何文件系统上创建临时缓存目录。 * 对系统进行最小升级(请参阅第 4.4.4 节 “最小系统升级”)或部分升级 ,然后再完整升级。这将有可能能先部分升级系统,并允许您在完整升级 之前清理包缓存。     请注意,为了安全地删除软件包,建议将 APT source-list 文件切换回 buster,如第 A.2 节 “检查您的 APT source-list 文件”中所述。 4.4.4. 最小系统升级 重要     如果您打算进行远程升级,请注意第 5.1.23 节 “升级过程中无法建立新 的 SSH 连接”。 在某些情况下,直接完整升级(如下所述)可能会删除大量您希望保留的     软件包。因此,我们建议采用两部分升级过程:首先进行最小的升级以解 决这些冲突,然后进行完整升级,如第 4.4.5 节 “升级系统”所述。     要开始,请运行:     # apt upgrade --without-new-pkgs     这会升级那些不需要删除或安装其它任何包的软件。     当系统空间紧张,并且由于空间限制而无法运行完整升级时,最小的系统 升级也将非常有用。     如果安装了 apt-listchanges 软件包,(在默认配置下)它将在分页器中 显示有关升级软件包的重要信息。阅读后按 q 退出分页器并继续升级。 4.4.5. 升级系统     一旦您完成了上述步骤,您就可以继续进行升级的主要部分。请执行:     # apt full-upgrade 这将对系统进行一次全面的升级,安装所有包的最新可用版本,解决不同     发行版本的软件包之间的所有潜在的依赖关系变化。如有必要,它会安装 一些新包(通常是新版本的库,或是被重命名的软件包),并删除任何存 在冲突的过时包。 当从一组 CD/DVD/BD 升级时,您会在升级期间的某些时刻被要求插入指定     的盘片。您可能不得不多次插入相同的盘片,这是因为互相依赖的包已经 被散布到整个盘片组中去了。 无法在不改变其他软件包的安装状态的情况下升级的已安装软件包将停留     在当前版本(显示为“未被升级”)。这个问题可以通过使用 aptitude 选 择这些包来安装或是用 apt install 软件包来解决。 4.5. 升级期间可能遇到的问题     以下部分描述升级到 bullseye 期间已知可能会出现的问题。 4.5.1. Dist-upgrade 失败,显示“无法立即配置” 在某些情况下,下载软件包后,apt full-upgrade 步骤可能会失败:     E: 无法立即对 软件包 进行配置。 请查看 man 5 apt.conf 中的 APT::Immediate-Configure     如果发生这种情况,运行 apt full-upgrade -o APT::Immediate-Configure=0 应该可以使升级继续。     此问题的另一个可能解决方法是临时将 buster 和 bullseye 源都添加到 您的 APT source-list 文件中,并运行 apt update。 4.5.2. 预期的删除 升级到 bullseye 的过程可能会要求删除系统上的软件包。精确的软件包 列表将根据您安装的软件包集不同而有所不同。发行说明提供了关于这些     删除的一般性建议,但如有疑问,建议您在继续之前检查每种方式所显示 的要删除包列表。有关 bullseye 中过时软件包的更多信息,请参见第  4.8 节 “过时的软件包”。 4.5.3. 冲突或预依赖循环 有时有必要在 APT 中开启 APT::Force-LoopBreak 选项使之能够临时移除     一个重要的包,这是由于冲突或是预依赖循环。 apt 会警告您这一点并中 止升级。您可以通过在 apt 命令行中指定 -o APT::Force-LoopBreak=1 选项来解决这个问题。     有时一个系统的依赖关系太乱了以至于需要手工干预。通常这意味着使用 apt 或     # dpkg --remove 软件包名     来消除某些引起问题的包,或是 # apt -f install     # dpkg --configure --pending     在极端情况下,您可能不得不用类似下面的命令强制重新安装某个包     # dpkg --install /路/径/软件包名.deb 4.5.4. 文件冲突 如果您从“纯净的” buster 系统升级就不会出现文件冲突,但如果您装有     非官方的向后移植的软件包就可能出现冲突。文件冲突会导致类似以下这 样的错误: 正在解压缩 <软件包 foo> (来自 <软件包 foo 的文件>) ... dpkg: 处理软件包 <软件包 foo> (--install) 时出错: 正试图覆盖 `<某文件名>',     它同时被包含于软件包 <软件包 bar> 中 dpkg-deb: subprocess paste killed by signal (Broken pipe) 在处理时有错误发生: <软件包 foo>     您可以尝试强制删除错误信息中的最后一行提到的软件包来解决文件冲突 :     # dpkg -r --force-depends 软件包名     在修复这些问题后,您应该可以通过重复前述的 apt 命令来继续升级。 4.5.5. 配置文件变化 升级期间,您将会被询问有关配置或是重新配置一些软件包的问题。如果 您被问到是否用软件包维护者的版本替换 /etc/init.d 或 /etc/     manpath.config 下的文件时,通常有必要回答 “yes” 来确保系统一致性 。您总是可以恢复老版本的配置文件,因为它们会被保存为带有 .dpkg-old 后缀名的文件。 如果您不确定该做什么,那就记下软件包或文件的名称,以后再妥善处理     这些问题。您可以通过在 typescript 文件中搜索来查看升级期间显示在 屏幕上的信息。 4.5.6. 将会话切换到控制台 如果您使用系统的本地控制台升级,则可能会发现在升级过程中的某些时     候,控制台切换到了不同的视图,并且您无法看到升级过程。例如,在含 有图形界面的系统中,当显示管理器重新启动时,就可能发生这种情况。 要恢复运行升级的控制台,您必须使用 Ctrl+Alt+F1(如果在图形启动界     面)或 Alt+F1(如果在本地文本模式控制台)切换回虚拟终端 1。用和运 行升级的虚拟终端号码相同的功能键替换 F1。您还可以使用 Alt+左箭头 或 Alt+右箭头在不同的文本模式终端间切换。 4.6. 升级内核与相关包 这一节解释了如何升级您的内核,以及明确有关此次升级的潜在问题。您     可以安装由 Debian 提供的 linux-image-* 包,或者从源码编译一个自定 义的内核。 注意本节的很多信息基于假设,即您会使用一个模块化的 Debian 内核,     以及initramfs-tools 和 udev。如果您选择使用一个不需要 initrd 的自 定义内核,或是您使用了一种不同的 initrd 生成器,对您来说某些信息 可能不适用。 4.6.1. 安装内核元软件包 当您从 buster 完整升级至 bullseye 时,如果没有安装,强烈推荐您安     装 linux-image-* 元包。这些元包将在升级过程中自动引入新版本的内核 。您可以运行以下命令验证是否安装了上述元包:     # dpkg -l "linux-image*" | grep ^ii | grep -i meta 如果您没有看到任何输出,那么您需要手动安装一个新的 linux-image 软     件包,或者安装 linux-image 元包。要查看可用的 linux-image 元包列 表,请运行:     # apt-cache search linux-image- | grep -i meta | grep -v transition 如果您不确定要选哪个包,那就运行 uname -r 并查找带有类似名称的包     。例如,如果您看到 “4.9.0-8-amd64”,那推荐您安装 linux-image-amd64。您也可以使用 apt 来查看每个包的详细描述,以帮 助您选择最好用的那个。例如:     # apt show linux-image-amd64 然后您应该使用 apt install 来安装它。安装此新内核后,您应该在下一     个可能的时刻重新启动,以获得新内核版本提供的特性。但是,在升级之 后的第一次重启之前,请先查看第 5.1.25 节 “升级后在重启前需要做的 事”。 对于热爱冒险的用户,有一个简单的方法可以在 Debian 上编译自己的定 制内核。安装由 linux-source 包提供的内核源码。您可以使用源文件的     makefile 中的 deb-pkg 目标来构建二进制包。更多信息可以在 Debian Linux 内核手册 (https://kernel-team.pages.debian.net/ kernel-handbook/) 中找到,debian-kernel-handbook 包也提供同样内容 。 如果可能,把内核包的升级从主 full-upgrade 中独立出来是有利的,这     能减少暂时不可引导系统的可能性。请注意,这只应在第 4.4.4 节 “最小 系统升级”中描述的最小升级过程之后完成。 4.7. 为下个发布版本做准备     升级完成后,您可以为下一个发布版本做些准备工作。 * 像第 4.8 节 “过时的软件包”中描述的那样删除新产生的冗余的和过     时的软件包。您应该核查这些包所用的配置文件,并考虑完全删除( purge)这些软件包以移除它们的配置文件。参见第 4.7.1 节 “清理 已删除的软件包”。 4.7.1. 清理已删除的软件包 通常建议清理已删除的软件包。如果这些软件包已经在之前的版本升级(     例如升级到 buster)过程中被删除,或者它们是由第三方供应商提供的, 则尤其如此。特别地,已知旧的 init.d 脚本会导致问题。 小心     清理软件包通常也会清除其日志文件,因此您可能希望先备份它们。     以下命令显示所有已删除、但可能在系统上留下配置文件的软件包的列表 (如果有的话):     # dpkg -l | awk '/^rc/ { print $2 }'     可以使用 apt purge 删除这些软件包。假设您想一次性清除它们,可以使 用以下命令:     # apt purge $(dpkg -l | awk '/^rc/ { print $2 }')     如果您使用 aptitude,还可以使用以下的替代方法: # aptitude search '~c'     # aptitude purge '~c' 4.8. 过时的软件包 引进新软件包的同时,bullseye 也清除了一些曾位于 buster 的旧软件包 。它不提供对这些过时包的升级。虽然没有什么可以阻止您继续使用过时     的软件包,但 Debian 项目通常会在 bullseye 发布一年后停止对它的安 全更新^[5],并且在此期间通常不会提供其他支持。如果有的话,建议用 可用的替代品替换它们。 软件包被从发行版中移除有很多原因,如:它们不再被上游作者维护了; 没有 Debian 开发者对维护这个包感兴趣;这些包提供的功能被不同的软     件(或新版本)替代了;或者由于它们自身的缺陷,使得它们被认为不适 用于 bullseye。最后一种情况下,这些包有可能仍然位于 “unstable” 版 之下。 有些软件包管理工具提供了简单的方法以寻找已不在任何已知软件仓库的     已安装软件包。aptitude 文本用户界面将它们列在了“过期的和在本地创 建的软件包”分类中,它们可以通过以下命令被列出和删除: # aptitude search '~o'     # aptitude purge '~o' Debian 缺陷跟踪系统 (https://bugs.debian.org/) 通常会提供有关这个 包为什么会被移除的额外信息。您应该既查看此包自身的归档缺陷报告,     同时也要查看 ftp.debian.org 伪软件包 (https://bugs.debian.org/ cgi-bin/pkgreport.cgi?pkg=ftp.debian.org&archive=yes) 的归档缺陷 报告。     要获得 Bullseye 的过时包列表,请参阅第 5.3.1 节 “值得注意的过时软 件包”。 4.8.1. 过渡哑包 来自 buster 的一些软件包可能已在 bullseye 中被过渡哑包( transitional dummy package)替换,这些软件包是用于简化升级的空占     位符。例如,如果以前单个包的应用程序已被拆分为多个,则可以提供与 旧包具有相同名称的过渡包,并设置合适的依赖以使新的包被安装。发生 这种情况后,可以安全地移除冗余哑包。 绝大多数过渡哑包的描述信息会显示它们的用途。但哑包的描述信息并不     统一;特别是,一些 “哑” 包被设计为保持安装,以便引入完整的软件套 件或跟踪某些程序的当前最新版本。您也可以使用 deborphan 命令的 --guess-* 选项(例如 --guess-dummy)来检测系统上的过渡哑包。 ---------------------------------------------------------------------     ^[1] 如果 debconf 优先级被设置为非常高的级别,则可能不会弹出配置 提示,但如果默认应答不适用于您的系统,依赖于此的服务将无法启动。 ^[2] 例如:DNS 或 DHCP 服务,特别是当没有冗余或故障转移时。以     DHCP 为例,如果租用时间低于升级过程完成所需的时间,终端用户可能会 断开网络连接。     ^[3] 此功能可以通过在您的启动参数中添加参数 panic=0 来禁用。     ^[4] Debian 的包管理系统正常情况下不允许一个软件包移除或是替换另 一个软件包所拥有的文件,除非已经被设定为替换那个包。     ^[5] 或者,直到这段时间内有另一个版本发布为止。在任意时刻,一般仅 对两个 stable 版本提供支持。 第 5 章 bullseye 中需要注意的问题 有时,新发行版本引入的变化会产生一些我们无法有效避免的副作用,或     者是会导致系统在其它地方暴露问题。我们在此记述了一些我们所知道的 问题。请同时参阅勘误表,相关软件包之说明文件,错误报告及其它在第  6.1 节 “扩展阅读”中所提及的信息。 5.1. 升级到 bullseye 时可能出现的问题     本节介绍从 buster 升级到 bullseye 的相关问题。 5.1.1. 用于 Intel GPU 的新 VA-API 默认驱动 对于 Broadwell 和更新硬件的 Intel GPU,视频加速 API(VA-API)实现     现在默认由 intel-media-va-driver 来提供硬件加速的视频解码。已经安 装了 va-driver-all 软件包的系统在升级过程中将自动更新至新驱动程序 。 旧的驱动软件包 i965-va-driver 仍然可用且提供最高到 Cannon Lake 微 架构的支持。如需优先使用旧有驱动而非新的默认驱动,请将     LIBVA_DRIVER_NAME 环境变量设置为 i965,例如在 /etc/environment 文 件中进行变量设置。如需了解更多信息,请参见硬件视频加速 (https:// wiki.debian.org/HardwareVideoAcceleration) 的维基页面。 5.1.2. XFS 文件系统不再支持 barrier/nobarrier 选项 XFS 文件系统已经移除对 barrier 和 nobarrier 挂载选项的支持。请查     看系统中的 /etc/fstab 文件、查找是否存在这些关键词并移除它们。继 续采用这些选项的分区将无法挂载。 5.1.3. 安全更新仓库的布局变化 对 bullseye 系统来说,安全更新套装已从 codename/updates 重命名为     bullseye-security;用户应该在升级的同时相应更改 APT source-list 文件。 您的 APT 配置文件中与安全更新相关的行应当设置为如下所示:     deb https://deb.debian.org/debian-security bullseye-security main contrib 如果您的 APT 配置还含有关于 pinning 或者 APT::Default-Release 的 内容,则可能也需要进行调整,因为安全更新仓库的版本代号不再与普通 仓库相同。对于 bullseye 而言,一个可行的 APT::Default-Release 行 类似于:     APT::Default-Release "/^bullseye(|-security|-updates)$/"; which takes advantage of APT's support for regular expressions (inside /). 5.1.4. 密码哈希默认使用 yescrypt 用于本地系统帐号的默认密码哈希已从 SHA-512 变更 (https:// tracker.debian.org/news/1226655/ accepted-pam-140-3-source-into-unstable/) 为 yescrypt (https://     www.openwall.com/yescrypt/) (参见 crypt(5) (https:// manpages.debian.org//bullseye/libcrypt-dev/crypt.5.html) )。预期 这项修改将提供对基于字典的密码猜测攻击的更好保护,可以提升针对攻 击的时间和空间复杂性。     如需应用这一项安全措施,仅需修改一次本地密码。例如,使用 passwd 命令。     旧密码将继续正常工作,并不受到创建密码时采用的密码哈希类型的影响 。 Debian 10(Buster)不支持 yescrypt。因此,shadow 密码文件(/etc/ shadow)不可从一个 bullseye 系统复制到另一个 buster 系统上。如果     这样复制了文件,在 bullseye 系统上修改过的密码将无法在 buster 系 统上正常使用。类似地,不能从 bullseye 系统复制并在 buster 系统上 粘贴对应的密码哈希。 如果需要跨 bullseye 和 buster 系统密码哈希的兼容性,请手动修改 / etc/pam.d/common-password 文件。找到如下字样的行:     password [success=1 default=ignore] pam_unix.so obscure yescrypt 并使用 sha512 替换 yescrypt。 5.1.5. NSS NIS 和 NIS+ 支持需要新软件包 NSS NIS 和 NIS+ 支持已移动至单独的 libnss-nis 和 libnss-nisplus     软件包中。令人遗憾的是 glibc 不能依赖这些软件包,所以它们仅被推荐 安装。     在正在使用 NIS 或 NIS+ 的系统上,推荐在系统更新后检查这些软件包是 否已经正确安装。 5.1.6. Unbound 对配置文件片段的处理 DNS 解析工具 unbound 更改了处理配置文件片段的方式。如果您依赖     include: 指令以将多个片段合并成一个有效的配置,请阅读 the NEWS file (https://sources.debian.org/src/unbound/bullseye/debian/NEWS /) 了解具体信息。 5.1.7. rsync 的废弃参数 The rsync parameter --noatime has been renamed --open-noatime. The old form is no longer supported; if you are using it you should see the NEWS file (https://sources.debian.org/src/rsync/ bullseye/debian/rsync.NEWS/) . Transfer processes between systems running different Debian releases may require the buster side to     be upgraded to a version of rsync from the backports (https:// backports.debian.org/) repository. The version of rsync in the initial release of bullseye also deprecated --copy-devices in favor of --write-devices, but version 3.2.3-4+deb11u1 (included in bullseye point release 11.1) reverts this deprecation and supports both options. 5.1.8. Vim 插件处理 历史上,vim 的插件由 vim-scripts 软件包提供;它们现在由 Vim 的原     生 “package” 功能而非 vim-addon-manager 管理。Vim 用户应该按照 NEWS 文件 (https://sources.debian.org/src/vim-scripts/bullseye/ debian/NEWS/) 给出的步骤在升级前进行相应的准备。 5.1.9. OpenStack 和 cgroups v1 OpenStack Victoria(随 bullseye 提供)需要 cgroup v1 以用于块设备 QoS。因 bullseye 同时变更为默认使用 cgroupv2(参见第 2.2.4 节 “控 制组 v2”),在 /sys/fs/cgroup 中的 sysfs 树将不再包含 cgroup v1     的功能,如 /sys/fs/cgroup/blkio;这将导致 cgcreate -g blkio:foo 命令运行失败。对正在运行 nova-compute 或 cinder-volume 软件包的 OpenStack 节点,强烈建议将 systemd.unified_cgroup_hierarchy=false 和 systemd.legacy_systemd_cgroup_controller=false 的参数加入内核 命令行中以覆盖默认配置并恢复旧有的 cgroup 层级结构。 5.1.10. OpenStack API 策略文件 跟随上游的建议,随 bullseye 发布的 OpenStack Victoria 将 OpenStack API 切换到了使用新的 YAML 格式。这导致大多数 OpenStack     服务,包括 Nova、Glance 和 Keystone,将无法和以 policy.json 格式 文件编写的 API 策略共同工作。因此,软件包现在提供了 /etc/PROJECT/ policy.d 文件夹和其中的 00_default_policy.yaml 文件,其中所有策略 内容都默认处于注释状态。 为了免旧有的 policy.json 文件处于活动状态,Debian 的 OpenStack 软     件包会将该文件重命名为 disabled.policy.json.old。在某些没有更好的 升级策略的场景下,升级甚至会直接删除 policy.json 文件。所以在升级 系统之前,我们强烈建议您事先备份已部署机器上的 policy.json 文件。 更多详细信息可以在上游文档 (https://governance.openstack.org/tc/     goals/selected/wallaby/ migrate-policy-format-from-json-to-yaml.html) 中找到。 5.1.11. 升级时 sendmail 将暂时停机 和 sendmail 软件包的普通升级有所不同,本次系统从 buster 升级为     bullseye 的过程中将停止 sendmail 服务,导致比通常情况更长的服务暂 停。如需了解缩短停机时间的通用建议,请参考第 4.1.3 节 “准备服务停 机”。 5.1.12. FUSE 3 包括 gvfs-fuse、kio-fuse 和 sshfs 在内的部分软件包已经切换至使用     FUSE 3。在升级过程中,这将导致系统自动安装 fuse3 并卸载 fuse 软件 包。 在某些特殊场景下,例如仅运行 apt-get dist-upgrade 命令进行系统升 级而非按照第 4 章从 Debian 10(buster)升级一节所描述的步骤升级的     情况下,依赖 fuse3 的软件包可能在升级时维持在就版本。这时,使用 bullseye 提供的 apt 工具再次运行第 4.4.5 节 “升级系统”一节所描述 的步骤或者手动升级相关的软件包可以解决这一问题。 5.1.13. GnuPG 选项文件 从 2.2.27-1 版本开始,GnuPG 套件的用户配置文件已移动至 ~/.gnupg/     gpg.conf,且 ~/.gnupg/options 已不再使用。如有必要,请重命名文件 ,或者将其内容移动至新位置。 5.1.14. Linux 默认启用用户名字空间 自 Linux 5.10 版本之后,所有用户默认可以创建用户名字空间。此项功     能可帮助网页浏览器和容器管理器等程序为不受信任的或可信程度较低的 代码创建更加严格的沙盒环境,而无需以 root 身份运行或者使用 setuid-root 帮助程序。 先前版本的 Debian 默认只允许 root 身份的进程使用该项功能,因其暴     露了内核中更多的安全问题。然而随着这项功能实现的成熟,我们现在有 信心认为启用它的风险小于其带来的提升系统安全的好处。     如果您想要仍然限制这项特性,请设置如下 sysctl 参数:     user.max_user_namespaces = 0     请注意一些桌面和容器的特性在这项功能受限的情况下将无法工作,包括 网页浏览器、WebKitGTK、Flatpak 和 GNOME 缩略图。     Debian 特有的 sysctl kernel.unprivileged_userns_clone=0 也能起到 类似的作用,但该配置方式已经弃用。 5.1.15. Linux 默认禁用无特权的 bpf() 调用 从 Linux 5.10 开始,Debian 默认禁用非特权用户的 bpf() 调用。然而     ,如有需要,管理员仍可通过向 kernel.unprivileged_bpf_disabled sysctl 写入 0 或者 1 来改变此设定。     如果您希望仍然启用无特权的 bpf() 调用,请设置如下 sysctl 参数:     kernel.unprivileged_bpf_disabled = 0     如需了解该项默认值变更在 Debian 中的背景信息,请参见 #990411 (https://bugs.debian.org/990411) 。 5.1.16. redmine 在 bullseye 中缺失 软件包 redmine 不在 bullseye 主源中提供,因没有足够时间从上游停止 支持(只接受对严重安全问题修复的 bug)的旧版 rails 软件包到 bullseye 中的对应软件包迁移。Ruby Extras 团队的维护者计划跟随上游     的更新并稍后通过 backports (https://backports.debian.org/) 途径在 bullseye 中提供可用的软件包。如果您无法等待 backports 提供的版本 ,您可以先使用运行 buster 系统的虚拟机或容器单独处理这个应用程序 。 5.1.17. Exim 4.94 请将 bullseye 中的 Exim 更新视为一次重大的 Exim 更新。这次更新引 入了受污染数据(tainted data)的概念,也就是从不受信任的来源(例     如消息发送方或者接收方)读取的数据。这类受污染的数据(例如 $local_part 或者 $domain)将无法和其他字符串共同作为文件名、目录 名,或者命令名使用。 未进行针对性更新的配置将无法工作。旧的 Debian Exim 配置文件在未经     修改的情况下也将无法工作;用户需要安装新的配置文件,并合并本地改 动。     典型的无法工作的例子包括: * 投递到 /var/mail/$local_part。请使用 $local_part_data 以及 check_local_user。 * 使用     data = ${lookup{$local_part}lsearch{/some/path/$domain/aliases}} 代替 data = ${lookup{$local_part}lsearch{/some/path/$domain_data/aliases}} 作为虚拟域的别名文件。     处理这一改变的基本策略是使用 lookup 的结果进行进一步处理,而不是 原本的(由远程提供的)值。 为了方便升级,有一个新的主配置选项,可以临时将 taint error 降为     warning,使得旧的配置能够在新的 Exim 中工作。要使用这个功能,在升 级前添加 .ifdef _OPT_MAIN_ALLOW_INSECURE_TAINTED_DATA     allow_insecure_tainted_data = yes .endif 到 Exim 配置文件中(例如 /etc/exim4/exim4.conf.localmacros),并     检查日志文件中是否有 taint warning。这是一个临时的解决方法,该功 能在引入时就已经被标记为待删除了。 5.1.18. SCSI 设备探测是非确定性的 由于 Linux 内核的改动,对 SCSI 设备的探测不再是确定性的。这可能给 依赖磁盘探测顺序的安装带来问题。两个可能的替代方案是使用 /dev/     disk/by-path 中的链接,或者使用这个邮件列表帖子 (https:// lore.kernel.org/lkml/59eedd28-25d4-7899-7c3c-89fe7fdd4b43@acm.org /) 中的 udev 规则。 5.1.19. rdiff-backup 需要服务器和客户端同步更新 rdiff-backup 版本 1 和 2 的网络协议不兼容。这意味着本地和远程的     rdiff-backup 必须是相同版本(1 或者 2)。鉴于 buster 中的版本是 1.2.8 而 bullseye 中的版本是 2.0.5,仅将本地或远程的系统从 buster 升级到 bullseye 将使得 rdiff-backup 无法在二者间通讯。 可以从 buster-backports 仓库安装 rdiff-backup 2.0.5,参见     backports (https://backports.debian.org/) 。这使得用户能够在 buster 系统上先仅升级 rdiff-backup 软件包,然后在方便的时候将各个 系统独立地升级到 bullseye。 5.1.20. Intel CPU 微码问题 当前位于 bullseye 和 buster-security(参见 DSA-4934-1 (https:// www.debian.org/security/2021/dsa-4934) )中的 intel-microcode 软 件包存在两个已知的严重问题。对某些 CoffeeLake 处理器,这次更新可     能导致使用 firmware-iwlwifi 的网络设备无法正常工作 (https:// github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/ issues/56) ,另外,对于某些使用 Skylake R0/D0 处理器以及非常老旧 的固件/BIOS 的系统,系统可能在启动时挂起 (https://github.com/ intel/Intel-Linux-Processor-Microcode-Data-Files/issues/31) 。 如果您因为以上问题之一而没有安装来自 DSA-4934-1 的更新,或者您没 有启用安全更新仓库,请注意,将 intel-microcode 软件包升级到     bullseye 可能导致您的系统在启动时挂起,或者导致 iwlwifi 无法使用 。如果出现这种情况,您可以通过禁止在启动时加载微码来解决;参见 DSA 中的指引,或者阅读 intel-microcode 的 README.Debian。 5.1.21. 涉及 libgc1c2 的升级需要执行两次 在 buster 中依赖 libgc1c2 的软件包(例如 guile-2.2-libs)可能在升     级到 bullseye 时的首次 full upgrade 的过程中被阻止升级。进行第二 次升级通常会解决问题。此问题的背景可以在缺陷 #988963 (https:// bugs.debian.org/988963) 中找到。 5.1.22. fail2ban 无法使用来自 bsd-mailx 的 mail 工具发送电子邮件 fail2ban 软件包可以配置为启用邮件通知。它通过调用 mail 实现此功能 ,此命令通过 Debian 中的多个软件包提供。Bullseye 发布前的一项安全 更新(对于使用 mailutils 中的 mail 命令的系统是必需的)破坏了使用 bsd-mailx 中的 mail 命令的系统的此项功能。使用 fail2ban 及     bsd-mailx 且需要 fail2ban 发送邮件通知的用户需要切换提供 mail 的 软件包,或者手动撤销此上游提交 (https://github.com/fail2ban/ fail2ban/commit/410a6ce5c80dd981c22752da034f2529b5eee844) (即在 /etc/fail2ban/action.d/ 中的多个文件中加入字符串"-E 'set escape'" )带来的变更。 5.1.23. 升级过程中无法建立新的 SSH 连接 由于某些不幸的因素,虽然和以往一样,现有的 Secure Shell(SSH)连     接可以在升级过程中继续工作,但是在升级过程中,无法建立新的 SSH 连 接的时间比以往要长。如果升级是通过可能被中断的 SSH 连接进行的,建 议在进行全系统升级前升级 openssh-server 软件包。 5.1.24. Open vSwitch upgrade requires interfaces(5) change The openvswitch upgrade may fail to recover bridges after boot. The workaround is:     sed -i s/^allow-ovs/auto/ /etc/network/interfaces     For more info, see bug #989720 (https://bugs.debian.org/989720) . 5.1.25. 升级后在重启前需要做的事     当 apt full-upgrade 完成时,“形式上的”升级就完成了。对于向 bullseye 的升级而言,重启前没有什么特别的操作需要完成。 5.2. 升级过程之外的注意事项 5.2.1. 安全支持上的局限性     有一些软件包,Debian 不能保证针对安全漏洞提供最小的向后移植。这些 将在以下小节中介绍。 注意     debian-security-support 软件包可帮助跟踪已安装软件包的安全支持状 态。 5.2.1.1. 网页浏览器及其渲染引擎的安全支持状态 Debian 11 包含几个浏览器引擎,长期以来安全漏洞断续发生。高比例的 漏洞,加上上游对长期分支支持不力,使得向后移植这些浏览器的安全补     丁非常困难。此外,库的相互依赖性使得无法更新到较新的上游版本。因 此,构建在(包括但不限于)webkit 和 khtml 引擎^[6]上的浏览器在 bullseye 中有包含,但不提供安全支持。这些浏览器不应用于不受信任的 网站。webkit2gtk 和 wpewebkit 引擎提供安全支持。 对于通用网页浏览器,我们推荐 Firefox 和 Chromium。这些软件将使用     最新的 ESR 版本持续在 stable 中予以更新。这同样适用于 Thunderbird 。 5.2.1.2. OpenJDK 17 Debian bullseye 提供了 OpenJDK 17 的一个预先发布版本(这是预期的 下一个 OpenJDK LTS 版本,上一个版本则是 OpenJDK 11)以避免冗杂的     自举流程。当前的计划是在 bullseye 中持续更新 OpenJDK 17 直至上游 在 2021 年 10 月发布最终正式版本,之后则尽力提供安全更新,但并不 会保证跟随每个季度发布的安全更新。 5.2.1.3. 基于 Go 的软件包 Debian 当前的基础架构在重新构建系统化使用静态链接的软件包时存在一     些问题。在 buster 之前这在实际操作中並不算是问题;但随着 Go 生态 系统的成长,基于 Go 的软件包将只能得到有限的安全支持,直到基础架 构得到改进使得这些软件包更加易于维护。     如果 Go 开发库需要更新,这些更新只能通过定期的小版本更新提供,整 个更新周期将会拉长。 5.2.2. 不使用鼠标来访问 GNOME 设置程序 如果没有指针设备,用户不能直接改变 gnome-control-center 提供的 GNOME 设置的配置。备用方案是按下右方向键两次以从侧边栏导航至主内     容。如需回到侧边栏,您可以使用 Ctrl+F 的键位组合启动搜索,随便输 入一些内容,然后按下 Esc 键取消搜索。这时,您可以使用上方向键和下 方向键在侧边栏中导航。使用键盘无法选中搜索结果。 5.2.3.  rescue 启动选项在未设置 root 密码时不可用 在 buster 及之后的系统上使用的 sulogin 实现导致使用 rescue 选项的     系统引导总是需要 root 密码。如果系统未设置 root 密码,救援( rescue)模式将实质上无法使用。然而,用户仍然可以改用 init=/sbin/ sulogin --force 内核参数进行引导 要配置 systemd 在进入救援模式(也称作单用户(single)模式,参见     systemd(1) (https://manpages.debian.org//bullseye/systemd/ systemd.1.html) )时做出和上述修改等价的操作,运行 sudo systemctl edit rescue.service 并创建一个内容如下的文件: [Service]     Environment=SYSTEMD_SULOGIN_FORCE=1 您可能也需要(或仅需要)对 emergency.service 单元启用该功能,因为 该单元会在出现某些错误时自动启动(参见 systemd.special(7) (https:     //manpages.debian.org//bullseye/systemd/systemd.special.7.html) ),也会在内核命令行中添加了 emergency 时(例如无法使用救援模式恢 复系统时)启动。     如需了解背景信息以及安全方面的意义,请参见 #802211 (https:// bugs.debian.org//802211) 。 5.2.4. 32-bit Xen PV guests are not supported The Linux kernel (from version 5.9) no longer supports 32-bit xen     virtual machines using PV mode (https://wiki.xenproject.org/wiki/ Virtualization_Spectrum) . Such virtual machines need to be converted to the 64-bit PC architecture. You can check which mode a Xen guest is running (inside the virtual machine): $ cat /sys/hypervisor/guest_type     PV Virtual machines that return, for example, PVH or HVM are not affected. 5.3. 废弃与过时内容 5.3.1. 值得注意的过时软件包     以下是已知的和值得注意的过时软件包的列表(有关过时软件包的描述, 请参阅第 4.8 节 “过时的软件包”)。 过时的软件包包括: * lilo 软件包已从 bullseye 移除。它作为系统引导工具的后继软件是 grub2。 * Mailman 邮件列表管理器套件的版本 3 是本次发布的 Debian 中唯一 可用的版本。Mailman 已经被分割成了不同组件;核心组件在软件包 mailman3 中,完整的套装可以通过 mailman3-full 元软件包获得。 旧的 2.1 版 Mailman 已不可用(它曾经使用 mailman 这个软件包名 称)。该分支依赖的 Python 2 支持已从 Debian 中去除。 如需查阅升级指导,请参考项目的迁移文档。 (https:// docs.mailman3.org/en/latest/migration.html) * Linux 内核已不再提供 isdn4linux(i4l)支持。相应地,有关的用 户软件包 isdnutils、isdnactivecards、drdsl 和 ibod 已从软件仓 库中删除。 * 系统不再提供过时的 libappindicator 软件库。相应地,有关的软件 包如 libappindicator1、libappindicator3-1 和 libappindicator-dev 将不可用。这可能会导致一些仍然依赖 libappindicator 提供系统托盘和指示器支持的第三方软件出现依赖 错误。     Debian 将使用 libayanata-appindicator 作为 libappindicator 的 替代品。如需了解技术背景,请阅读此公告 (https:// lists.debian.org/debian-devel/2018/03/msg00506.html) 。 * Debian 不再提供 chef 软件包。如果您使用 Chef 进行配置管理,最 佳的升级路径可能是切换到使用由 Chef Inc (https://www.chef.io /) 提供的软件包。 如需了解软件包移除的背景,请阅读该移除请求 (https:// bugs.debian.org/cgi-bin/bugreport.cgi?bug=963750) 。 * Python 2 的生命周期已经结束,它也不会得到更多的安全更新。其作 为供用户运行的程序已不受支持,且依赖它的软件包均已切换至 Python 3 或被移除。但是,Debian bullseye 仍然包含了某个版本的 Python 2.7 以及一小部分 Python 2 的构建用工具,例如 python-setuptools。提供的这些工具纯粹用于某些尚未转换到 Python 3 的应用程序的构建流程。 * aufs-dkms 软件包将不作为 bullseye 的一部分出现。大多数 aufs-dkms 用户应当切换至 overlayfs,后者提供了相似的功能且具 有内核的支持。然而,某些 Debian 安装实例可能使用了不兼容 overlayfs 的文件系统,如不带有 d_type 的 xfs。我们建议需要使 用 aufs-dkms 的用户在升级至 bullseye 之前先进行迁移。 * 网络连接管理器 wicd 在升级后将不再可用,因此为了避免失去网络 连接的风险,建议用户在升级前切换到替代方案,例如 network-manager 或者 connman。 5.3.2. bullseye 的废弃组件 随着下一个版本 Debian 12(代号为 Bookworm)的发布,某些功能将被弃     用。用户需要迁移到其他替代方案,以防止在更新到 Debian 12 时出现问 题。     这包括以下特性: * 历史上的一些采用将 /bin、/sbin 和 /lib 目录与 /usr 下相应目录 区分开来的文件系统布局的理由现在已不成立;请参见 Freedesktop.org 的相应总结 (https://www.freedesktop.org/wiki/ Software/systemd/TheCaseForTheUsrMerge) 。Debian bullseye 将 会是最后一个支持 non-merged-usr 布局的 Debian 发布版本;对于 采用了历史布局并在升级时并未重装的系统,Debian 提供了 usrmerge 软件包以方便用户在需要的时候进行布局转换。 * bullseye 是最后一个提供 apt-key 命令的 Debian 版本。今后密钥 应当以在 /etc/apt/trusted.gpg.d 目录下存放文件的形式进行提供 ,密钥文件可以是 gpg --export 命令导出的带有 .gpg 扩展名的二 进制格式,也可以是 ASCII 编码的带有 .asc 扩展名的文本文件。 计划中将会提供替代 apt-key list 命令的手动查询密钥环的新工具 ,但具体工作尚未开始。     * slapd 数据库后端 slapd-bdb(5) (https://manpages.debian.org// bullseye/slapd/slapd-bdb.5.html) ,slapd-hdb(5) (https:// manpages.debian.org//bullseye/slapd/slapd-hdb.5.html) ,以及 slapd-shell(5) (https://manpages.debian.org//bullseye/slapd/ slapd-shell.5.html) 即将被废弃,并且不会被包含于 Debian 12。 使用 bdb 或者 hdb 后端的 LDAP 数据库应当被迁移到 slapd-mdb(5) (https://manpages.debian.org//bullseye/slapd/ slapd-mdb.5.html) 后端。 此外,slapd-perl(5) (https://manpages.debian.org//bullseye/ slapd/slapd-perl.5.html) 以及 slapd-sql(5) (https:// manpages.debian.org//bullseye/slapd/slapd-sql.5.html) 后端已 被标记为过时,并且可能在未来的某个发布版本中被删除。 OpenLDAP 项目不支持废弃的或过时的后端。Debian 11 仅对这些后端 提供尽力而为的支持。 5.4. 已知的严重缺陷 虽然 Debian 在准备好后发布,不幸的是,这并不意味着不存在已知的缺 陷。作为发布过程的一部分,所有严重程度为 serious 及以上的缺陷都受 到发布团队的密切跟踪,所以您可以在 Debian 缺陷跟踪系统 (https://     bugs.debian.org/) 中找到在 bullseye 发布过程的最后阶段被标记为“已 忽略”的缺陷概览 (https://bugs.debian.org/cgi-bin/pkgreport.cgi? users=release.debian.org@packages.debian.org;tag= bullseye-can-defer) 。截至发布时,有以下值得在本文档中提及的缺陷 影响 bullseye: +------------------------------------------------------------------------+ | 缺陷编号 | 软件包(源码包或二进制包) | 描述 | |---------------+----------------------------+---------------------------| |922981 (https:/| |ca-certificates-java: /etc/| |/ |ca-certificates-java |ca-certificates/update.d/ | |bugs.debian.org| |jks-keystore doesn't update| |/922981) | |/etc/ssl/certs/java/cacerts| |---------------+----------------------------+---------------------------| |990026 (https:/| | | |/ |cron |cron: Reduced charset in | |bugs.debian.org| |MAILTO causes breakage | |/990026) | | | |---------------+----------------------------+---------------------------| |991081 (https:/| | | |/ |gir1.2-diodon-1.0 |gir1.2-diodon-1.0 lacks | |bugs.debian.org| |dependencies | |/991081) | | | |---------------+----------------------------+---------------------------| |990318 (https:/| |python-pkg-resources: | |/ |python-pkg-resources |please add Breaks against | |bugs.debian.org| |the unversioned python | |/990318) | |packages | |---------------+----------------------------+---------------------------| |991449 (https:/| |fix for CVE-2021-32749 | |/ |fail2ban |breaks systems with mail | |bugs.debian.org| |from bsd-mailx | |/991449) | | | |---------------+----------------------------+---------------------------| |990708 (https:/| |mariadb-server-10.5: | |/ |mariadb-server-10.5,galera-4|upgrade problems due to | |bugs.debian.org| |galera-3 -> galera-4 switch| |/990708) | | | |---------------+----------------------------+---------------------------| |980429 (https:/| |g++-10: spurious c++17 mode| |/ |src:gcc-10 |segmentation fault in | |bugs.debian.org| |append_to_statement_list_1 | |/980429) | |(tree-iterator.c:65) | |---------------+----------------------------+---------------------------| |980609 (https:/| | | |/ |src:gcc-10 |missing i386-cpuinfo.h | |bugs.debian.org| | | |/980609) | | | |---------------+----------------------------+---------------------------| |984574 (https:/| | | |/ |gcc-10-base |gcc-10-base: please add | |bugs.debian.org| |Breaks: gcc-8-base (<< 8.4)| |/984574) | | | |---------------+----------------------------+---------------------------| | | |git-el,elpa-magit: fails to| |984931 (https:/| |install: /usr/lib/ | |/ | |emacsen-common/packages/ | |bugs.debian.org|git-el |install/git emacs failed at| |/984931) | |/usr/lib/emacsen-common/ | | | |lib.pl line 19, | | | |line 7. | |---------------+----------------------------+---------------------------| |987264 (https:/| | | |/ |git-el |git-el: fails to install | |bugs.debian.org| |with xemacs21 | |/987264) | | | |---------------+----------------------------+---------------------------| |991082 (https:/| | | |/ |gir1.2-gtd-1.0 |gir1.2-gtd-1.0 has empty | |bugs.debian.org| |Depends | |/991082) | | | |---------------+----------------------------+---------------------------| |948739 (https:/| | | |/ |gparted |gparted should not mask | |bugs.debian.org| |.mount units | |/948739) | | | |---------------+----------------------------+---------------------------| |984714 (https:/| |gparted should suggest | |/ |gparted |exfatprogs and backport the| |bugs.debian.org| |commit that rejects | |/984714) | |exfat-utils | |---------------+----------------------------+---------------------------| |984760 (https:/| |grub-efi-amd64: upgrade | |/ |grub-efi-amd64 |works, boot fails (error: | |bugs.debian.org| |symbol `grub_is_lockdown` | |/984760) | |not found) | |---------------+----------------------------+---------------------------| |968368 (https:/| |ifenslave: Option | |/ |ifenslave |bond-master fails to add | |bugs.debian.org| |interface to bond | |/968368) | | | |---------------+----------------------------+---------------------------| |990428 (https:/| |ifenslave: Bonding not |     |/ |ifenslave |working on bullseye (using | |bugs.debian.org| |bond-slaves config) | |/990428) | | | |---------------+----------------------------+---------------------------| |991113 (https:/| |libpam-chroot installs | |/ |libpam-chroot |pam_chroot.so into the | |bugs.debian.org| |wrong directory | |/991113) | | | |---------------+----------------------------+---------------------------| | | |libgl1-mesa-dri: | |989545 (https:/| |si_texture.c:1727 | |/ |src:llvm-toolchain-11 |si_texture_transfer_map - | |bugs.debian.org| |failed to create temporary | |/989545) | |texture to hold untiled | | | |copy | |---------------+----------------------------+---------------------------| |982459 (https:/| |mdadm --examine in chroot | |/ |mdadm |without /proc,/dev,/sys | |bugs.debian.org| |mounted corrupts host's | |/982459) | |filesystem | |---------------+----------------------------+---------------------------| |981054 (https:/| | | |/ |openipmi |openipmi: Missing | |bugs.debian.org| |dependency on kmod | |/981054) | | | |---------------+----------------------------+---------------------------| |948318 (https:/| |openssh-server: Unable to | |/ |openssh-server |restart sshd restart after | |bugs.debian.org| |upgrade to version 8.1p1-2 | |/948318) | | | |---------------+----------------------------+---------------------------| |991151 (https:/| |procps: dropped the reload | |/ |procps |option from the init | |bugs.debian.org| |script, breaking corekeeper| |/991151) | | | |---------------+----------------------------+---------------------------| |989103 (https:/| | | |/ |pulseaudio |pulseaudio regressed on | |bugs.debian.org| |control=Wave configuration | |/989103) | | | |---------------+----------------------------+---------------------------| |984580 (https:/| | | |/ |libpython3.9-dev |libpython3.9-dev: missing | |bugs.debian.org| |dependency on zlib1g-dev | |/984580) | | | |---------------+----------------------------+---------------------------| |990417 (https:/| |openjdk-11-jre-headless: | |/ | |running java in qemu s390 | |bugs.debian.org|src:qemu |gives a SIGILL at C | |/990417) | |[linux-vdso64.so.1+0x6f8] | | | |__kernel_getcpu+0x8 | |---------------+----------------------------+---------------------------| |859926 (https:/| |breaks with pulse-audio as | |/ |speech-dispatcher |output when spawned by | |bugs.debian.org| |speechd-up from init system| |/859926) | | | |---------------+----------------------------+---------------------------| |932501 (https:/| |squid-deb-proxy: daemon | |/ |src:squid-deb-proxy |does not start due to the | |bugs.debian.org| |conf file not being allowed| |/932501) | |by apparmor | |---------------+----------------------------+---------------------------| |991588 (https:/| |tpm2-abrmd should not use | |/ |tpm2-abrmd |Requires= | |bugs.debian.org| |systemd-udev-settle.service| |/991588) | |in its unit | |---------------+----------------------------+---------------------------| | | |libjs-bootstrap4: broken | |991939 (https:/| |symlinks: /usr/share/ | |/ |libjs-bootstrap4 |javascript/bootstrap4/css/ | |bugs.debian.org| |bootstrap*.css.map -> ../..| |/991939) | |/../nodejs/bootstrap/dist/ | | | |css/bootstrap*.css.map | |---------------+----------------------------+---------------------------| |991822 (https:/| |src:wine: dh_auto_clean | |/ |src:wine |deletes unrelated files | |bugs.debian.org| |outside of package source | |/991822) | | | |---------------+----------------------------+---------------------------| |988477 (https:/| |xen-hypervisor-4.14-amd64: | |/ |src:xen |xen dmesg shows (XEN) | |bugs.debian.org| |AMD-Vi: IO_PAGE_FAULT on | |/988477) | |sata pci device | |---------------+----------------------------+---------------------------| |991788 (https:/| |xfce4-settings: black | |/ |xfce4-settings |screen after suspend when | |bugs.debian.org| |laptop lid is closed and | |/991788) | |re-opened | +------------------------------------------------------------------------+ --------------------------------------------------------------------- ^[6] 这些引擎在多个不同的源软件包中提供,该问题适用于提供这些引擎     的所有包。该问题也适用于此处未明确提及的网页渲染引擎,但 webkit2gtk 以及新增的 wpewebkit 除外。 第 6 章 关于 Debian 的更多信息 6.1. 扩展阅读 除了本发行说明和安装指南外,Debian 文档项目(DDP)有更多关于 Debian 的文档,该项目的目标是为 Debian 用户和开发者创建高质量的文     档。它包括 Debian 参考手册、Debian 新维护人员指南、Debian 常见问 题及更多文档。如果您想了解这些资源的完整信息,请查阅 DDP 网站 (https://www.debian.org/doc/) 和 Debian 维基 (https:// wiki.debian.org/) 。     各个软件包的文档被安装到 /usr/share/doc/软件包。它包括版权信息, 特定于 Debian 的信息,以及上游的文档。 6.2. 获得帮助 Debian 的用户可以从很多渠道获得帮助、建议和支持,但您只应该在研究     并查阅文档了解问题大致情况后再考虑寻求帮助。本节简单介绍了对 Debian 新用户可能会有帮助的渠道。 6.2.1. 邮件列表 邮件列表 debian-user(英语)和其它 debian-user-语言(其它语言)中 有 Debian 用户最感兴趣的内容。想了解这些邮件列表的详细信息,以及     如何订阅,请参阅 https://lists.debian.org/ (https:// lists.debian.org/) 。发问前请先在邮件列表存档中搜索答案,并注意遵 守列表有关的礼仪和准则。 6.2.2. IRC Debian 在 OFTC IRC 网络上有专门对 Debian 用户提供帮助的 IRC 频道     。使用您喜欢的 IRC 客户端连接 irc.debian.org,加入 #debian 频道即 可。     请遵守频道的准则,尊敬其他用户。可以在 Debian 维基 (https:// wiki.debian.org/DebianIRC) 中找到该准则。     欲了解更多关于 OFTC 的信息,请访问他们的网站 (http://www.oftc.net /) 。 6.3. 报告 Bug 我们努力让 Debian 成为一款高质量的操作系统,但这并不意味着我们提 供的软件包完全没有任何错误。为了和 Debian 一贯的“开放的开发”原则     相呼应,也为了能为我们的用户提供更好的服务,我们在错误追踪系统( BTS)提供全部已经报告的错误的所有信息。您可以通过 https:// bugs.debian.org/ (https://bugs.debian.org/) 来访问 BTS。 如果您在本发行版或者软件包中发现了错误,请报告它,从而可以在将来     的发行中被修复。您需要一个有效的电子邮件地址才能报告错误。有这个 限制是因为这样我们才能够追踪错误,以及在开发人员需要更多信息时, 能够与提交人联系。 您可以使用程序 reportbug 来提交一个错误报告,或者亲自动手发送电子     邮件。可以通过阅读参考文档(如果您安装了 doc-debian 包的话,在 / usr/share/doc/debian 可以找到)或者在线的错误追踪系统 (https:// bugs.debian.org/) ,以获得更多关于错误追踪系统的信息和用法。 6.4. 为 Debian 做贡献 并不是只有高手才能对 Debian 做出贡献。当您在各种支持用户的邮件列 表 (https://lists.debian.org/) 中帮助其他用户解决问题时,您就是在 对整个社区做贡献。参与开发邮件列表 (https://lists.debian.org/) 以 帮助开发者定位(及解决)和发行版开发相关的问题,对我们也是极大的     帮助。为了维持 Debian 系统一贯的高品质,请提交错误报告 (https:// bugs.debian.org/) ,并协助开发人员跟踪和修复它们。how-can-i-help 工具可帮助您找到合适的已报告的错误供您解决。如果您有文字方面的天 赋,您也可以通过撰写文档 (https://www.debian.org/doc/vcs) ,或者 翻译 (https://www.debian.org/international/) 现有文档到您自己的语 言的方式来做出贡献。 如果您能投入更多的时间的话,您可以负责维护 Debian 发行版中的部分 自由软件。如果您能够新增或维护其他用户希望 Debian 所能包含的软件 包的话就更好了,可以在急需人手和被期待的软件包库(WNPP) (https:/     /www.debian.org/devel/wnpp/) 中获得相关的信息。如果您对特定的用户 群体感兴趣,那么您可能会很乐意参加 Debian 的某些子项目 (https:// www.debian.org/devel/#projects) ,包括向特定处理器架构的移植,以 及为特定用户群体准备的 Debian Pure Blends (https:// wiki.debian.org/DebianPureBlends) ,等等。 无论如何,只要您以任何方式参加了自由软件社区的活动,不管您是用户     、程序员、作者,还是译者,您就已经为自由软件社区做出了贡献。贡献 本身就是一件非常有益而有趣的事情,它不仅让您能够结交更多的新伙伴 ,还能让您内心充满温暖的感觉。 附录 A. 在升级前管理您的 buster 系统     本附录包含在升级到 bullseye 之前,如何确保您能够从 buster 安装或 升级软件包的相关信息。这应该只在特定的情况下需要。 A.1. 升级您的 buster 系统 基本上这和您之前已经做过的 buster 系统升级没有什么区别。唯一的区     别就是,您首先需要确定您的软件包列表仍旧引用 buster ,就像在第  A.2 节 “检查您的 APT source-list 文件”中说明的那样。     如果您从 Debian 镜像升级,将自动升级到最新的 buster 的小版本更新 。 A.2. 检查您的 APT source-list 文件 如果您的 APT source-list 文件(参见 sources.list(5) (https:// manpages.debian.org//bullseye/apt/sources.list.5.html) )的任意一     行包含了 “stable” 这样的字符串,它在新的稳定版本发布后实际上已经 指向了 bullseye。如果您还没准备好升级系统的话,这可能不是您想要的 结果。但如果您已经运行过了 apt update 命令的话,您仍然可以采取下 述步骤退回原状态而不产生额外问题。 如果您已经从 bullseye 安装了软件包,就没有太大的必要再从 buster     安装软件包了。在这种情况下,您必须决定是否继续或者终止。降级软件 包是可能的,但是不属于本文的讨论范围。 以 root 权限身份用您喜欢的编辑器打开 APT source-list 文件(/etc/ apt/sources.list),检查所有以 deb http:、deb https:、deb     tor+http:、deb tor+https:、URIs: http:、URIs: https:、URIs: tor+http: 或 URIs: tor+https: 开头,引用 “stable” 的行。如果找到 了,将 stable 改为 buster。     如果有些行以 deb file: 或 URIs: file: 开始,您应该自己检查该位置 是否包含有 buster 或者 bullseye 的档案仓库。 重要     不要修改任何以 deb cdrom: 或 URIs: cdrom: 开始的行。如果这样做了 的话,这些行就会失效,您将需要重新运行 apt-cdrom 命令以启用从光盘 更新的功能。即使在 cdrom: 的行发现 “unstable” 这样的字符串也不要 感到奇怪。虽然令人困惑,但这是正常的。     如果做了任何修改,保存文件后执行     # apt update     以刷新软件包列表。 A.3. 删除过时的配置文件     在将系统升级到 bullseye 之前,建议从系统中删除旧的配置文件(例如 /etc 下的 *.dpkg-{new,old} 文件)。 附录 B. 发行说明的贡献者     有许多人对发行说明提供了帮助,包括但不限于 Adam D. Barratt,Adam Di Carlo,Andreas Barth,Frans Pop,Anne Bezemer,Bob Hilliard,Charles Plessy,Christian Perrier, Christoph Berg,Daniel Baumann,David Prévot,Emmanuel Petrișor, Emmanuel Kasper,Esko Arajärvi,Frans Pop,Giovanni Rapagnani, Gordon Farquharson,Hideki Yamane,Holger Wansing,Javier Fernández-Sanguino Peña,Jens Seidel,Jonas Meurer,Jonathan     Nieder,Joost van Baal-Ilić,Josip Rodin,Julien Cristau,Justin B Rye,LaMont Jones,Luk Claes,Martin Michlmayr,Michael Biebl, Moritz Mühlenhoff,Niels Thykier,Noah Meyerhans,Noritada Kobayashi,Osamu Aoki, Paul Gevers,Peter Green,Rob Bradford, Samuel Thibault,Simon Bienlein,Simon Paillard,Stefan Fritsch, Steve Langasek,Steve McIntyre,Tobias Scherer,victory,Vincent McIntyre,和 W. Martin Borgert。     本文档被翻译为多种语言。感谢这些翻译者们! 索引 A Apache,桌面和知名软件包 B BIND,桌面和知名软件包 C Calligra,桌面和知名软件包 Cryptsetup,桌面和知名软件包 D DocBook XML,本文档的源文件 Dovecot,桌面和知名软件包 E Exim,桌面和知名软件包 G GCC,桌面和知名软件包 GIMP,桌面和知名软件包 GNOME,桌面和知名软件包 GNUcash,桌面和知名软件包 GnuPG,桌面和知名软件包 I Inkscape,桌面和知名软件包 K KDE,桌面和知名软件包 L LibreOffice,桌面和知名软件包 LXDE,桌面和知名软件包 LXQt,桌面和知名软件包 M MariaDB,桌面和知名软件包 MATE,桌面和知名软件包 N Nginx,桌面和知名软件包 O OpenJDK,桌面和知名软件包 OpenSSH,桌面和知名软件包 P packages apt,贡献升级报告,添加本地镜像 APT 源,FUSE 3 apt-listchanges,最小系统升级 aptitude,准备软件包数据库,确保您有足够的空间升级,清理已删除的 软件包 aufs-dkms,值得注意的过时软件包 bazel-bootstrap,Initial availability of the Bazel build system bsd-mailx,fail2ban 无法使用来自 bsd-mailx 的 mail 工具发送电子邮 件 ca-certificates-java,已知的严重缺陷 chef,值得注意的过时软件包 cinder-volume,OpenStack 和 cgroups v1 connman,值得注意的过时软件包 cron,已知的严重缺陷 cups-browsed,CUPS 和无驱动打印 cups-daemon,CUPS 和无驱动打印 cups-filters,CUPS 和无驱动打印 dblatex,本文档的源文件 debian-goodies,确保您有足够的空间升级 debian-kernel-handbook,安装内核元软件包 debian-security-support,安全支持上的局限性 doc-debian,报告 Bug docbook-xsl,本文档的源文件 drdsl,值得注意的过时软件包 exfat-fuse,内核 exFAT 支持 exfat-utils,内核 exFAT 支持 exfatprogs,内核 exFAT 支持 fail2ban,fail2ban 无法使用来自 bsd-mailx 的 mail 工具发送电子邮 件,已知的严重缺陷 firmware-iwlwifi,Intel CPU 微码问题 fuse,FUSE 3 fuse3 ,FUSE 3 gcc-10-base,已知的严重缺陷 gir1.2-diodon-1.0,已知的严重缺陷 gir1.2-gtd-1.0,已知的严重缺陷 git-el,已知的严重缺陷 glibc,NSS NIS 和 NIS+ 支持需要新软件包 gnome-control-center,不使用鼠标来访问 GNOME 设置程序 gparted,已知的严重缺陷 grub-efi-amd64,已知的严重缺陷 grub2,值得注意的过时软件包 guile-2.2-libs,涉及 libgc1c2 的升级需要执行两次 gvfs-fuse,FUSE 3 how-can-i-help,为 Debian 做贡献 i965-va-driver,用于 Intel GPU 的新 VA-API 默认驱动 ibod,值得注意的过时软件包 ifenslave,已知的严重缺陷 initramfs-tools,initrd 引导时使用调试环境,升级内核与相关包 intel-media-va-driver,用于 Intel GPU 的新 VA-API 默认驱动 intel-microcode,Intel CPU 微码问题 ipp-usb,CUPS 和无驱动打印,SANE 和无驱动扫描 isdnactivecards,值得注意的过时软件包 isdnutils,值得注意的过时软件包 kio-fuse,FUSE 3 libappindicator-dev,值得注意的过时软件包 libappindicator1,值得注意的过时软件包 libappindicator3-1,值得注意的过时软件包 libgc1c2,涉及 libgc1c2 的升级需要执行两次 libjs-bootstrap4,已知的严重缺陷 libnss-nis,NSS NIS 和 NIS+ 支持需要新软件包 libnss-nisplus,NSS NIS 和 NIS+ 支持需要新软件包 libpam-chroot,已知的严重缺陷 libpython3.9-dev,已知的严重缺陷 libsane1,SANE 和无驱动扫描 lilo,值得注意的过时软件包 linux-image-*,升级内核与相关包 linux-image-amd64,安装内核元软件包 linux-source,安装内核元软件包 localepurge,确保您有足够的空间升级 mailman,值得注意的过时软件包 mailman3,值得注意的过时软件包 mailman3-full,值得注意的过时软件包 mailutils,fail2ban 无法使用来自 bsd-mailx 的 mail 工具发送电子邮 件 mariadb-server-10.5,galera-4,已知的严重缺陷 mdadm,已知的严重缺陷 network-manager,值得注意的过时软件包 nova-compute,OpenStack 和 cgroups v1 openipmi,已知的严重缺陷 openssh-server,升级过程中无法建立新的 SSH 连接,已知的严重缺陷 openvswitch,Open vSwitch upgrade requires interfaces(5) change popularity-contest,确保您有足够的空间升级 procps,已知的严重缺陷 pulseaudio,已知的严重缺陷 python-pkg-resources,已知的严重缺陷 python-setuptools,值得注意的过时软件包 rails,redmine 在 bullseye 中缺失 rdiff-backup,rdiff-backup 需要服务器和客户端同步更新 redmine,redmine 在 bullseye 中缺失 release-notes,报告文档错误 rsync,rsync 的废弃参数 rsyslog,持久化 systemd 日志 sane-airscan,SANE 和无驱动扫描 sendmail,升级时 sendmail 将暂时停机 slapd,bullseye 的废弃组件 speech-dispatcher,已知的严重缺陷 src:gcc-10,已知的严重缺陷 src:llvm-toolchain-11,已知的严重缺陷 src:qemu,已知的严重缺陷 src:squid-deb-proxy,已知的严重缺陷 src:wine,已知的严重缺陷 src:xen,已知的严重缺陷 sshfs,FUSE 3 synaptic,准备软件包数据库 systemd,对 init 系统替代品的支持的改进 tinc,为升级准备安全环境 tpm2-abrmd,已知的严重缺陷 udev,升级内核与相关包,SCSI 设备探测是非确定性的 unbound,Unbound 对配置文件片段的处理 upgrade-reports,贡献升级报告 usrmerge,bullseye 的废弃组件 va-driver-all,用于 Intel GPU 的新 VA-API 默认驱动 vim,Vim 插件处理 vim-addon-manager,Vim 插件处理 vim-scripts,Vim 插件处理 wicd,值得注意的过时软件包 xen,32-bit Xen PV guests are not supported xfce4-settings,已知的严重缺陷 xmlroff,本文档的源文件 xsltproc,本文档的源文件 Perl,桌面和知名软件包 PHP,桌面和知名软件包 Postfix,桌面和知名软件包 PostgreSQL,桌面和知名软件包 X Xfce,桌面和知名软件包 术语表 ACPI 高级配置和电源接口(Advanced Configuration and Power Interface) ALSA 高级 Linux 声音架构(Advanced Linux Sound Architecture) BD 蓝光光碟(Blu-ray Disc) CD 小型光碟(Compact Disc) CD-ROM 只读光碟(Compact Disc Read Only Memory) DHCP 动态主机配置协议(Dynamic Host Configuration Protocol) DLBD 双层蓝光光碟(Dual Layer Blu-ray Disc) DNS 域名系统(Domain Name System) DVD 数字通用光碟(Digital Versatile Disc) GIMP GNU 图像处理程序(GNU Image Manipulation Program) GNU GNU's Not Unix GPG GNU 隐私保护(GNU Privacy Guard) LDAP 轻量目录访问协议(Lightweight Directory Access Protocol) LSB Linux 标准基础(Linux Standard Base) LVM 逻辑卷管理器(Logical Volume Manager) MTA 邮件传送代理(Mail Transport Agent) NBD 网络块设备(Network Block Device) NFS 网络文件系统(Network File System) NIC 网络接口卡(Network Interface Card) NIS 网络信息服务(Network Information Service) PHP PHP:超文本预处理器(PHP: Hypertext Preprocessor) RAID 独立磁盘冗余阵列(Redundant Array of Independent Disks) SATA 串行先进技术总线附属(Serial Advanced Technology Attachment) SSL 安全套接字层(Secure Sockets Layer) TLS 传输层安全协议(Transport Layer Security) UEFI 统一可扩展固件接口(Unified Extensible Firmware Interface) USB 通用串行总线(Universal Serial Bus) UUID 通用惟一标识符(Universally Unique Identifier) WPA Wi-Fi 保护接入(Wi-Fi Protected Access)