目录
有时,新发行版本引入的变化会产生一些我们无法有效避免的副作用,或者是会导致系统在其它地方暴露问题。我们在此记述了一些我们所知道的问题。请同时参阅勘误表,相关软件包之说明文件,错误报告及其它在第 6.1 节 “扩展阅读”中所提及的信息。
本节介绍从 buster 升级到 bullseye 的相关问题。
XFS 文件系统已经移除对 barrier
和 nobarrier
挂载选项的支持。请查看系统中的 /etc/fstab
文件、查找是否存在这些关键词并移除它们。继续采用这些选项的分区将无法挂载。
对 bullseye 系统来说,安全更新套装已从
重命名为
codename
/updatesbullseye-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
/
).
用于本地系统帐号的默认密码哈希已从 SHA-512 变更为 yescrypt(参见 crypt(5))。预期这项修改将提供对基于字典的密码猜测攻击的更好保护,可以提升针对攻击的时间和空间复杂性。
如需应用这一项安全措施,仅需修改一次本地密码。例如,使用 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
。
NSS NIS 和 NIS+ 支持已移动至单独的 libnss-nis
和 libnss-nisplus
软件包中。令人遗憾的是 glibc
不能依赖这些软件包,所以它们仅被推荐安装。
在正在使用 NIS 或 NIS+ 的系统上,推荐在系统更新后检查这些软件包是否已经正确安装。
DNS 解析工具 unbound
更改了处理配置文件片段的方式。如果您依赖 include:
指令以将多个片段合并成一个有效的配置,请阅读
the NEWS
file 了解具体信息。
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. Transfer processes between systems running different
Debian releases may require the buster side to be upgraded to a version of
rsync
from the backports 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.
历史上,vim
的插件由 vim-scripts
软件包提供;它们现在由 Vim 的原生
“package” 功能而非 vim-addon-manager
管理。Vim 用户应该按照 NEWS
文件 给出的步骤在升级前进行相应的准备。
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 层级结构。
跟随上游的建议,随 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
文件。
更多详细信息可以在上游文档中找到。
和 sendmail
软件包的普通升级有所不同,本次系统从 buster
升级为 bullseye 的过程中将停止 sendmail 服务,导致比通常情况更长的服务暂停。如需了解缩短停机时间的通用建议,请参考第 4.1.3 节 “准备服务停机”。
包括 gvfs-fuse
、kio-fuse
和 sshfs
在内的部分软件包已经切换至使用 FUSE 3。在升级过程中,这将导致系统自动安装
fuse3
并卸载 fuse
软件包。
在某些特殊场景下,例如仅运行 apt-get dist-upgrade 命令进行系统升级而非按照第 4 章 从 Debian 10(buster)升级一节所描述的步骤升级的情况下,依赖 fuse3
的软件包可能在升级时维持在就版本。这时,使用 bullseye 提供的
apt
工具再次运行第 4.4.5 节 “升级系统”一节所描述的步骤或者手动升级相关的软件包可以解决这一问题。
从 2.2.27-1 版本开始,GnuPG
套件的用户配置文件已移动至
~/.gnupg/gpg.conf
,且
~/.gnupg/options
已不再使用。如有必要,请重命名文件,或者将其内容移动至新位置。
自 Linux
5.10
版本之后,所有用户默认可以创建用户名字空间。此项功能可帮助网页浏览器和容器管理器等程序为不受信任的或可信程度较低的代码创建更加严格的沙盒环境,而无需以
root 身份运行或者使用 setuid-root 帮助程序。
先前版本的 Debian 默认只允许 root 身份的进程使用该项功能,因其暴露了内核中更多的安全问题。然而随着这项功能实现的成熟,我们现在有信心认为启用它的风险小于其带来的提升系统安全的好处。
如果您想要仍然限制这项特性,请设置如下 sysctl 参数:
user.max_user_namespaces = 0
请注意一些桌面和容器的特性在这项功能受限的情况下将无法工作,包括网页浏览器、WebKitGTK
、Flatpak
和 GNOME
缩略图。
Debian 特有的 sysctl kernel.unprivileged_userns_clone=0
也能起到类似的作用,但该配置方式已经弃用。
从 Linux
5.10 开始,Debian 默认禁用非特权用户的 bpf()
调用。然而,如有需要,管理员仍可通过向 kernel.unprivileged_bpf_disabled
sysctl 写入 0 或者 1 来改变此设定。
如果您希望仍然启用无特权的 bpf() 调用,请设置如下 sysctl 参数:
kernel.unprivileged_bpf_disabled = 0
如需了解该项默认值变更在 Debian 中的背景信息,请参见 #990411。
软件包 redmine
不在 bullseye
主源中提供,因没有足够时间从上游停止支持(只接受对严重安全问题修复的 bug)的旧版 rails
软件包到 bullseye 中的对应软件包迁移。Ruby
Extras
团队的维护者计划跟随上游的更新并稍后通过 backports 途径在 bullseye
中提供可用的软件包。如果您无法等待 backports 提供的版本,您可以先使用运行 buster 系统的虚拟机或容器单独处理这个应用程序。
请将 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。这是一个临时的解决方法,该功能在引入时就已经被标记为待删除了。
由于 Linux 内核的改动,对 SCSI 设备的探测不再是确定性的。这可能给依赖磁盘探测顺序的安装带来问题。两个可能的替代方案是使用
/dev/disk/by-path
中的链接,或者使用这个邮件列表帖子中的
udev
规则。
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。这使得用户能够在 buster
系统上先仅升级 rdiff-backup
软件包,然后在方便的时候将各个系统独立地升级到 bullseye。
当前位于 bullseye 和 buster-security(参见 DSA-4934-1)中的
intel-microcode
软件包存在两个已知的严重问题。 对某些
CoffeeLake 处理器,这次更新可能导致使用 firmware-iwlwifi
的网络设备无法正常工作,另外,对于某些使用
Skylake R0/D0 处理器以及非常老旧的固件/BIOS 的系统,系统可能在启动时挂起。
如果您因为以上问题之一而没有安装来自 DSA-4934-1 的更新,或者您没有启用安全更新仓库,请注意,将 intel-microcode
软件包升级到 bullseye
可能导致您的系统在启动时挂起,或者导致 iwlwifi 无法使用。如果出现这种情况,您可以通过禁止在启动时加载微码来解决;参见 DSA
中的指引,或者阅读 intel-microcode
的
README.Debian
。
在 buster 中依赖 libgc1c2
的软件包(例如
guile-2.2-libs
)可能在升级到 bullseye 时的首次
full upgrade 的过程中被阻止升级。进行第二次升级通常会解决问题。此问题的背景可以在缺陷 #988963 中找到。
fail2ban
软件包可以配置为启用邮件通知。它通过调用
mail 实现此功能,此命令通过 Debian 中的多个软件包提供。Bullseye
发布前的一项安全更新(对于使用 mailutils
中的
mail 命令的系统是必需的)破坏了使用 bsd-mailx
中的 mail
命令的系统的此项功能。使用 fail2ban
及
bsd-mailx
且需要 fail2ban
发送邮件通知的用户需要切换提供 mail 的软件包,或者手动撤销此上游提交(即在
/etc/fail2ban/action.d/
中的多个文件中加入字符串"-E 'set
escape'
")带来的变更。
由于某些不幸的因素,虽然和以往一样,现有的 Secure Shell(SSH)连接可以在升级过程中继续工作,但是在升级过程中,无法建立新的 SSH
连接的时间比以往要长。如果升级是通过可能被中断的 SSH 连接进行的,建议在进行全系统升级前升级 openssh-server
软件包。
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.
有一些软件包,Debian 不能保证针对安全漏洞提供最小的向后移植。这些将在以下小节中介绍。
Debian 11 包含几个浏览器引擎,长期以来安全漏洞断续发生。高比例的漏洞,加上上游对长期分支支持不力,使得向后移植这些浏览器的安全补丁非常困难。此外,库的相互依赖性使得无法更新到较新的上游版本。因此,构建在(包括但不限于)webkit 和 khtml 引擎[6]上的浏览器在 bullseye 中有包含,但不提供安全支持。这些浏览器不应用于不受信任的网站。webkit2gtk 和 wpewebkit 引擎提供安全支持。
对于通用网页浏览器,我们推荐 Firefox 和 Chromium。这些软件将使用最新的 ESR 版本持续在 stable 中予以更新。这同样适用于 Thunderbird。
Debian bullseye 提供了 OpenJDK 17
的一个预先发布版本(这是预期的下一个
OpenJDK LTS
版本,上一个版本则是 OpenJDK
11
)以避免冗杂的自举流程。当前的计划是在 bullseye 中持续更新 OpenJDK 17
直至上游在 2021 年 10 月发布最终正式版本,之后则尽力提供安全更新,但并不会保证跟随每个季度发布的安全更新。
如果没有指针设备,用户不能直接改变 gnome-control-center
提供的 GNOME
设置的配置。备用方案是按下右方向键两次以从侧边栏导航至主内容。如需回到侧边栏,您可以使用 Ctrl+F
的键位组合启动搜索,随便输入一些内容,然后按下 Esc
键取消搜索。这时,您可以使用上方向键和下方向键在侧边栏中导航。使用键盘无法选中搜索结果。
在 buster 及之后的系统上使用的 sulogin
实现导致使用
rescue
选项的系统引导总是需要 root 密码。如果系统未设置 root
密码,救援(rescue)模式将实质上无法使用。然而,用户仍然可以改用 init=/sbin/sulogin
--force
内核参数进行引导
要配置 systemd 在进入救援模式(也称作单用户(single)模式,参见 systemd(1))时做出和上述修改等价的操作,运行 sudo systemctl edit rescue.service 并创建一个内容如下的文件:
[Service] Environment=SYSTEMD_SULOGIN_FORCE=1
您可能也需要(或仅需要)对 emergency.service
单元启用该功能,因为该单元会在出现某些错误时自动启动(参见 systemd.special(7)),也会在内核命令行中添加了
emergency
时(例如无法使用救援模式恢复系统时)启动。
如需了解背景信息以及安全方面的意义,请参见 #802211。
The Linux kernel (from version 5.9) no longer supports 32-bit xen
virtual machines using PV
mode. 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.
以下是已知的和值得注意的过时软件包的列表(有关过时软件包的描述,请参阅第 4.8 节 “过时的软件包”)。
过时的软件包包括:
Mailman 邮件列表管理器套件的版本 3 是本次发布的 Debian 中唯一可用的版本。Mailman 已经被分割成了不同组件;核心组件在软件包
mailman3
中,完整的套装可以通过 mailman3-full
元软件包获得。
旧的 2.1 版 Mailman 已不可用(它曾经使用 mailman
这个软件包名称)。该分支依赖的 Python 2 支持已从 Debian 中去除。
如需查阅升级指导,请参考项目的迁移文档。
Linux 内核已不再提供 isdn4linux
(i4l)支持。相应地,有关的用户软件包 isdnutils
、isdnactivecards
、drdsl
和 ibod
已从软件仓库中删除。
系统不再提供过时的 libappindicator 软件库。相应地,有关的软件包如 libappindicator1
、libappindicator3-1
和 libappindicator-dev
将不可用。这可能会导致一些仍然依赖
libappindicator 提供系统托盘和指示器支持的第三方软件出现依赖错误。
Debian 将使用 libayanata-appindicator
作为 libappindicator
的替代品。如需了解技术背景,请阅读此公告。
Debian 不再提供 chef
软件包。如果您使用 Chef
进行配置管理,最佳的升级路径可能是切换到使用由 Chef Inc
提供的软件包。
如需了解软件包移除的背景,请阅读该移除请求。
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
。
随着下一个版本 Debian 12(代号为 Bookworm)的发布,某些功能将被弃用。用户需要迁移到其他替代方案,以防止在更新到 Debian 12 时出现问题。
这包括以下特性:
历史上的一些采用将 /bin
、/sbin
和
/lib
目录与 /usr
下相应目录区分开来的文件系统布局的理由现在已不成立;请参见 Freedesktop.org
的相应总结。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),slapd-hdb(5),以及
slapd-shell(5)
即将被废弃,并且不会被包含于 Debian 12。使用 bdb
或者
hdb
后端的 LDAP 数据库应当被迁移到 slapd-mdb(5)
后端。
此外,slapd-perl(5) 以及 slapd-sql(5) 后端已被标记为过时,并且可能在未来的某个发布版本中被删除。
OpenLDAP 项目不支持废弃的或过时的后端。Debian 11 仅对这些后端提供尽力而为的支持。
虽然 Debian 在准备好后发布,不幸的是,这并不意味着不存在已知的缺陷。作为发布过程的一部分,所有严重程度为 serious 及以上的缺陷都受到发布团队的密切跟踪,所以您可以在 Debian 缺陷跟踪系统中找到在 bullseye 发布过程的最后阶段被标记为“已忽略”的缺陷概览。截至发布时,有以下值得在本文档中提及的缺陷影响 bullseye:
缺陷编号 | 软件包(源码包或二进制包) | 描述 |
---|---|---|
922981 | ca-certificates-java | ca-certificates-java: /etc/ca-certificates/update.d/jks-keystore doesn't update /etc/ssl/certs/java/cacerts |
990026 | cron | cron: Reduced charset in MAILTO causes breakage |
991081 | gir1.2-diodon-1.0 | gir1.2-diodon-1.0 lacks dependencies |
990318 | python-pkg-resources | python-pkg-resources: please add Breaks against the unversioned python packages |
991449 | fail2ban | fix for CVE-2021-32749 breaks systems with mail from bsd-mailx |
990708 | mariadb-server-10.5,galera-4 | mariadb-server-10.5: upgrade problems due to galera-3 -> galera-4 switch |
980429 | src:gcc-10 | g++-10: spurious c++17 mode segmentation fault in append_to_statement_list_1 (tree-iterator.c:65) |
980609 | src:gcc-10 | missing i386-cpuinfo.h |
984574 | gcc-10-base | gcc-10-base: please add Breaks: gcc-8-base (<< 8.4) |
984931 | git-el | git-el,elpa-magit: fails to install: /usr/lib/emacsen-common/packages/install/git emacs failed at /usr/lib/emacsen-common/lib.pl line 19, <TSORT> line 7. |
987264 | git-el | git-el: fails to install with xemacs21 |
991082 | gir1.2-gtd-1.0 | gir1.2-gtd-1.0 has empty Depends |
948739 | gparted | gparted should not mask .mount units |
984714 | gparted | gparted should suggest exfatprogs and backport the commit that rejects exfat-utils |
968368 | ifenslave | ifenslave: Option bond-master fails to add interface to bond |
990428 | ifenslave | ifenslave: Bonding not working on bullseye (using bond-slaves config) |
991113 | libpam-chroot | libpam-chroot installs pam_chroot.so into the wrong directory |
989545 | src:llvm-toolchain-11 | libgl1-mesa-dri: si_texture.c:1727 si_texture_transfer_map - failed to create temporary texture to hold untiled copy |
982459 | mdadm | mdadm --examine in chroot without /proc,/dev,/sys mounted corrupts host's filesystem |
981054 | openipmi | openipmi: Missing dependency on kmod |
948318 | openssh-server | openssh-server: Unable to restart sshd restart after upgrade to version 8.1p1-2 |
991151 | procps | procps: dropped the reload option from the init script, breaking corekeeper |
989103 | pulseaudio | pulseaudio regressed on control=Wave configuration |
984580 | libpython3.9-dev | libpython3.9-dev: missing dependency on zlib1g-dev |
990417 | src:qemu | openjdk-11-jre-headless: running java in qemu s390 gives a SIGILL at C [linux-vdso64.so.1+0x6f8] __kernel_getcpu+0x8 |
859926 | speech-dispatcher | breaks with pulse-audio as output when spawned by speechd-up from init system |
932501 | src:squid-deb-proxy | squid-deb-proxy: daemon does not start due to the conf file not being allowed by apparmor |
991588 | tpm2-abrmd | tpm2-abrmd should not use Requires=systemd-udev-settle.service in its unit |
991939 | libjs-bootstrap4 | libjs-bootstrap4: broken symlinks: /usr/share/javascript/bootstrap4/css/bootstrap*.css.map -> ../../../nodejs/bootstrap/dist/css/bootstrap*.css.map |
991822 | src:wine | src:wine: dh_auto_clean deletes unrelated files outside of package source |
988477 | src:xen | xen-hypervisor-4.14-amd64: xen dmesg shows (XEN) AMD-Vi: IO_PAGE_FAULT on sata pci device |
991788 | xfce4-settings | xfce4-settings: black screen after suspend when laptop lid is closed and re-opened |