我遇到了昨天刚发生的情况apt full-upgrade
。受影响的应用程序似乎是我之前从安装的应用程序debian-backports
。以下是我能找到的所有历史记录的概要:
1. 修改/etc/apt/sources.list
以添加bookworm-backports
;2024 年 8 月 15 日生效:
大约 2.5 个月前,我得出结论,我需要和 的backports
版本。为了实现这一点,我修改了我的文件以添加:pipewire
wireplumber
/etc/apt/sources.list
backports
$ cat /etc/apt/sources.list
deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb http://deb.debian.org/debian-security/ bookworm-security main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
# Uncomment deb-src lines below then 'apt-get update' to enable 'apt-get source'
#deb-src http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
#deb-src http://deb.debian.org/debian-security/ bookworm-security main contrib non-free non-free-firmware
#deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-backports main contrib non-free
未对以下项进行任何更改/etc/apt/sources.list.d/raspi.list
:
$ cat /etc/apt/sources.list.d/raspi.list
deb http://archive.raspberrypi.com/debian/ bookworm main
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspberrypi.com/debian/ bookworm main
2. 安装pipewire
等bookworm-backports
;2024 年 8 月 15 日生效:
$ sudo apt install -t bookworm-backports pipewire pipewire-audio-client-libraries libspa-0.2-bluetooth
...
$ sudo reboot
之后,我的系统上安装的pipewire
&wireplumber
版本(来自)如下:backports
$ pipewire --version
pipewire
Compiled with libpipewire 1.2.1
Linked with libpipewire 1.2.1
$ wireplumber --version
wireplumber
Compiled with libwireplumber 0.4.17
Linked with libwireplumber 0.4.17
3. 测试完成后快进至 2024 年 10 月 9 日
这个系统已经两个月没有升级了,因为我正在测试现在有问题的应用程序。这是我昨天看到的情况:
请注意bookworm-backports
以下列表:
$ sudo apt update
Hit:1 http://deb.debian.org/debian bookworm InRelease
Get:2 http://deb.debian.org/debian-security bookworm-security InRelease [48.0 kB]
Get:3 http://deb.debian.org/debian bookworm-updates InRelease [55.4 kB]
Get:4 http://deb.debian.org/debian bookworm-backports InRelease [59.0 kB]
Get:5 http://archive.raspberrypi.com/debian bookworm InRelease [39.0 kB]
Get:6 http://deb.debian.org/debian-security bookworm-security/main armhf Packages [181 kB]
Get:7 http://deb.debian.org/debian-security bookworm-security/main arm64 Packages [185 kB]
Get:8 http://deb.debian.org/debian-security bookworm-security/main Translation-en [114 kB]
Get:9 http://deb.debian.org/debian bookworm-backports/main arm64 Packages [249 kB]
Get:10 http://deb.debian.org/debian bookworm-backports/main armhf Packages [250 kB]
Get:11 http://deb.debian.org/debian bookworm-backports/main Translation-en [210 kB]
Get:12 http://deb.debian.org/debian bookworm-backports/contrib arm64 Packages [4,964 B]
Get:13 http://deb.debian.org/debian bookworm-backports/contrib armhf Packages [4,740 B]
Get:14 http://deb.debian.org/debian bookworm-backports/non-free arm64 Packages [6,864 B]
Get:15 http://deb.debian.org/debian bookworm-backports/non-free armhf Packages [1,516 B]
Get:16 http://archive.raspberrypi.com/debian bookworm/main armhf Packages [515 kB]
Get:17 http://archive.raspberrypi.com/debian bookworm/main arm64 Packages [485 kB]
Fetched 2,409 kB in 4s (614 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
59 packages can be upgraded. Run 'apt list --upgradable' to see them.
我已标记(*)以下 12 个条目backports
:
apt list --upgradable
Listing... Done
base-files/stable 12.4+deb12u7 arm64 [upgradable from: 12.4+deb12u6]
curl/stable 7.88.1-10+deb12u7 arm64 [upgradable from: 7.88.1-10+deb12u6]
git-man/stable-security,stable-security 1:2.39.5-0+deb12u1 all [upgradable from: 1:2.39.2-1.1]
git/stable-security 1:2.39.5-0+deb12u1 arm64 [upgradable from: 1:2.39.2-1.1]
initramfs-tools-core/stable,stable 0.142+deb12u1 all [upgradable from: 0.142]
initramfs-tools/stable,stable 0.142+deb12u1 all [upgradable from: 0.142]
libc-bin/stable 2.36-9+rpt2+deb12u8 arm64 [upgradable from: 2.36-9+rpt2+deb12u7]
libc-dev-bin/stable 2.36-9+rpt2+deb12u8 arm64 [upgradable from: 2.36-9+rpt2+deb12u7]
libc-devtools/stable 2.36-9+rpt2+deb12u8 arm64 [upgradable from: 2.36-9+rpt2+deb12u7]
libc-l10n/stable,stable 2.36-9+rpt2+deb12u8 all [upgradable from: 2.36-9+rpt2+deb12u7]
libc6-dbg/stable 2.36-9+rpt2+deb12u8 arm64 [upgradable from: 2.36-9+rpt2+deb12u7]
libc6-dev/stable 2.36-9+rpt2+deb12u8 arm64 [upgradable from: 2.36-9+rpt2+deb12u7]
libc6/stable 2.36-9+rpt2+deb12u8 arm64 [upgradable from: 2.36-9+rpt2+deb12u7]
libcamera-ipa/stable 0.3.2+rpt20240927-1 arm64 [upgradable from: 0.3.0+rpt20240617-1]
libcamera0.3/stable 0.3.2+rpt20240927-1 arm64 [upgradable from: 0.3.0+rpt20240617-1]
libcurl3-gnutls/stable 7.88.1-10+deb12u7 arm64 [upgradable from: 7.88.1-10+deb12u6]
libcurl4/stable 7.88.1-10+deb12u7 arm64 [upgradable from: 7.88.1-10+deb12u6]
libexpat1/stable-security 2.5.0-1+deb12u1 arm64 [upgradable from: 2.5.0-1]
libpam-systemd/stable 252.30-1~deb12u2 arm64 [upgradable from: 252.26-1~deb12u2]
* libpipewire-0.3-0/stable-backports 1.2.4-1~bpo12+1 arm64 [upgradable from: 1.2.1-1~bpo12+1]
* libpipewire-0.3-common/stable-backports,stable-backports 1.2.4-1~bpo12+1 all [upgradable from: 1.2.1-1~bpo12+1]
* libpipewire-0.3-modules/stable-backports 1.2.4-1~bpo12+1 arm64 [upgradable from: 1.2.1-1~bpo12+1]
libpisp-common/stable,stable 1.0.7-1 all [upgradable from: 1.0.6-1]
libpisp1/stable 1.0.7-1 arm64 [upgradable from: 1.0.6-1]
* libspa-0.2-bluetooth/stable-backports 1.2.4-1~bpo12+1 arm64 [upgradable from: 1.2.1-1~bpo12+1]
* libspa-0.2-modules/stable-backports 1.2.4-1~bpo12+1 arm64 [upgradable from: 1.2.1-1~bpo12+1]
libssl3/stable 3.0.14-1~deb12u2+rpt1 arm64 [upgradable from: 3.0.13-1~deb12u1+rpt1]
libsystemd-shared/stable 252.30-1~deb12u2 arm64 [upgradable from: 252.26-1~deb12u2]
libsystemd0/stable 252.30-1~deb12u2 arm64 [upgradable from: 252.26-1~deb12u2]
libudev1/stable 252.30-1~deb12u2 arm64 [upgradable from: 252.26-1~deb12u2]
linux-headers-rpi-2712/stable 1:6.6.51-1+rpt3 arm64 [upgradable from: 1:6.6.31-1+rpt1]
linux-headers-rpi-v8/stable 1:6.6.51-1+rpt3 arm64 [upgradable from: 1:6.6.31-1+rpt1]
linux-image-rpi-2712/stable 1:6.6.51-1+rpt3 arm64 [upgradable from: 1:6.6.31-1+rpt1]
linux-image-rpi-v8/stable 1:6.6.51-1+rpt3 arm64 [upgradable from: 1:6.6.31-1+rpt1]
linux-libc-dev/stable,stable 1:6.6.51-1+rpt3 all [upgradable from: 1:6.6.31-1+rpt1]
locales/stable,stable 2.36-9+rpt2+deb12u8 all [upgradable from: 2.36-9+rpt2+deb12u7]
openssl/stable 3.0.14-1~deb12u2+rpt1 arm64 [upgradable from: 3.0.13-1~deb12u1+rpt1]
* pipewire-alsa/stable-backports 1.2.4-1~bpo12+1 arm64 [upgradable from: 1.2.1-1~bpo12+1]
* pipewire-audio-client-libraries/stable-backports,stable-backports 1.2.4-1~bpo12+1 all [upgradable from: 1.2.1-1~bpo12+1]
* pipewire-bin/stable-backports 1.2.4-1~bpo12+1 arm64 [upgradable from: 1.2.1-1~bpo12+1]
* pipewire-jack/stable-backports 1.2.4-1~bpo12+1 arm64 [upgradable from: 1.2.1-1~bpo12+1]
* pipewire-pulse/stable-backports 1.2.4-1~bpo12+1 arm64 [upgradable from: 1.2.1-1~bpo12+1]
* pipewire/stable-backports 1.2.4-1~bpo12+1 arm64 [upgradable from: 1.2.1-1~bpo12+1]
python3-gpiozero/stable,stable 2.0.1-0+rpt1 all [upgradable from: 2.0-1]
raspberrypi-sys-mods/stable 20240911 arm64 [upgradable from: 20240807]
raspi-firmware/stable,stable 1:1.20240924-1 all [upgradable from: 1:1.20240529-1]
raspi-utils-core/stable 20240903-1 arm64 [upgradable from: 20240402-4]
raspi-utils-dt/stable 20240903-1 arm64 [upgradable from: 20240402-4]
raspi-utils-eeprom/stable 20240903-1 arm64 [upgradable from: 20240402-4]
raspi-utils-otp/stable,stable 20240903-1 all [upgradable from: 20240402-4]
raspi-utils/stable,stable 20240903-1 all [upgradable from: 20240402-4]
raspinfo/stable,stable 20240903-1 all [upgradable from: 20240402-4]
rpi-eeprom/stable,stable 26.0-1 all [upgradable from: 24.0-1]
rpicam-apps-lite/stable 1.5.2-2 arm64 [upgradable from: 1.5.0-2]
systemd-sysv/stable 252.30-1~deb12u2 arm64 [upgradable from: 252.26-1~deb12u2]
systemd-timesyncd/stable 252.30-1~deb12u2 arm64 [upgradable from: 252.26-1~deb12u2]
systemd/stable 252.30-1~deb12u2 arm64 [upgradable from: 252.26-1~deb12u2]
udev/stable 252.30-1~deb12u2 arm64 [upgradable from: 252.26-1~deb12u2]
* wireplumber/stable-backports 0.5.6-1~bpo12+1 arm64 [upgradable from: 0.4.17-1~bpo12+1]
于是我upgrade
对整个列表进行了检查;这似乎正常完成,但有些项目没有引起我的注意(检查过程中没有看屏幕upgrade
),直到“轮子脱落”:
$ sudo apt -y full-upgrade
...
The following package was automatically installed and is no longer required:
libwireplumber-0.4-0
Use 'sudo apt autoremove' to remove it.
The following NEW packages will be installed:
libwireplumber-0.5-0 linux-headers-6.6.51+rpt-common-rpi linux-headers-6.6.51+rpt-rpi-2712 linux-headers-6.6.51+rpt-rpi-v8
linux-image-6.6.51+rpt-rpi-2712 linux-image-6.6.51+rpt-rpi-v8 linux-kbuild-6.6.51+rpt
The following packages will be upgraded:
base-files curl git git-man initramfs-tools initramfs-tools-core libc-bin libc-dev-bin libc-devtools libc-l10n libc6 libc6-dbg libc6-dev
libcamera-ipa libcamera0.3 libcurl3-gnutls libcurl4 libexpat1 libpam-systemd libpipewire-0.3-0 libpipewire-0.3-common libpipewire-0.3-modules
libpisp-common libpisp1 libspa-0.2-bluetooth libspa-0.2-modules libssl3 libsystemd-shared libsystemd0 libudev1 linux-headers-rpi-2712
linux-headers-rpi-v8 linux-image-rpi-2712 linux-image-rpi-v8 linux-libc-dev locales openssl pipewire pipewire-alsa
pipewire-audio-client-libraries pipewire-bin pipewire-jack pipewire-pulse python3-gpiozero raspberrypi-sys-mods raspi-firmware raspi-utils
raspi-utils-core raspi-utils-dt raspi-utils-eeprom raspi-utils-otp raspinfo rpi-eeprom rpicam-apps-lite systemd systemd-sysv systemd-timesyncd
udev wireplumber
59 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
...
apt-listchanges: Reading changelogs...
apt-listchanges: News
---------------------
wireplumber (0.5.1-1) experimental; urgency=medium
WirePlumber 0.5 was released with a new configuration system.
The new system is based on JSON instead of Lua which makes WirePlumber >= 0.5
incompatible with Lua conf files written for WirePlumber 0.4.
.
If only the default configuration (e.g the configuration shipped with the
Debian package) is used, then there is nothing to do.
.
If you use custom configuration files, you will have to manually update them
by following the migration guide. No automatic migration of old configuration
files is performed.
.
This guide is available at (after having installed "wireplumber-doc"):
/usr/share/doc/wireplumber/html/daemon/configuration/migration.html
or
https://pipewire.pages.freedesktop.org/wireplumber/daemon/configuration/migration.html
-- Dylan Aïssi <[email protected]> Sun, 31 Mar 2024 14:44:46 +0200
...
$ sudo reboot
...
4. 之后upgrade
我发现“轮子脱落了”;pipewire
根本不再工作;没有蓝牙声音!
为了确认我已经知道的事情,我检查了蓝牙状态systemctl
$ systemctl status bluetooth
● bluetooth.service - Bluetooth service
Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; preset: enabled)
Active: active (running) since Wed 2024-10-09 22:29:30 UTC; 1h 6min ago
Docs: man:bluetoothd(8)
Main PID: 507 (bluetoothd)
Status: "Running"
Tasks: 1 (limit: 404)
CPU: 196ms
CGroup: /system.slice/bluetooth.service
└─507 /usr/libexec/bluetooth/bluetoothd
Oct 09 22:29:30 rpi2w bluetoothd[507]: Starting SDP server
Oct 09 22:29:30 rpi2w bluetoothd[507]: profiles/audio/vcp.c:vcp_init() D-Bus experimental not enabled
Oct 09 22:29:30 rpi2w bluetoothd[507]: src/plugin.c:plugin_init() Failed to init vcp plugin
Oct 09 22:29:30 rpi2w bluetoothd[507]: profiles/audio/mcp.c:mcp_init() D-Bus experimental not enabled
Oct 09 22:29:30 rpi2w bluetoothd[507]: src/plugin.c:plugin_init() Failed to init mcp plugin
Oct 09 22:29:30 rpi2w bluetoothd[507]: profiles/audio/bap.c:bap_init() D-Bus experimental not enabled
Oct 09 22:29:30 rpi2w bluetoothd[507]: src/plugin.c:plugin_init() Failed to init bap plugin
Oct 09 22:29:30 rpi2w bluetoothd[507]: Bluetooth management interface 1.22 initialized
Oct 09 22:29:31 rpi2w bluetoothd[507]: profiles/sap/server.c:sap_server_register() Sap driver initialization failed.
Oct 09 22:29:31 rpi2w bluetoothd[507]: sap-server: Operation not permitted (1)
$
bluetoothctl
能够连接我的扬声器,但是没有声音。
5. 使用 2024 年 8 月 16 日创建的原始映像文件恢复系统
这“使我的系统恢复”到安装等之后的状态pipewire
(当时运行良好!)。所以 - 此时我的系统又恢复了功能齐全;2024 年 10 月 9 日。
6. 开始逐步升级;2024 年 10 月 9 日
通过反复试验,我开始使用 进行“增量”升级sudo apt-get install --only-upgrade X Y Z etc
。每次升级后,我都会检查蓝牙是否仍在工作。在我将未安装软件包的列表缩减为以下内容后,蓝牙仍然正常工作:
$ apt list --upgradable
Listing... Done
libpipewire-0.3-common/stable-backports,stable-backports 1.2.4-1~bpo12+1 all [upgradable from: 1.2.1-1~bpo12+1]
libpipewire-0.3-modules/stable-backports 1.2.4-1~bpo12+1 arm64 [upgradable from: 1.2.1-1~bpo12+1]
libspa-0.2-bluetooth/stable-backports 1.2.4-1~bpo12+1 arm64 [upgradable from: 1.2.1-1~bpo12+1]
libspa-0.2-modules/stable-backports 1.2.4-1~bpo12+1 arm64 [upgradable from: 1.2.1-1~bpo12+1]
pipewire-alsa/stable-backports 1.2.4-1~bpo12+1 arm64 [upgradable from: 1.2.1-1~bpo12+1]
pipewire-audio-client-libraries/stable-backports,stable-backports 1.2.4-1~bpo12+1 all [upgradable from: 1.2.1-1~bpo12+1]
pipewire-bin/stable-backports 1.2.4-1~bpo12+1 arm64 [upgradable from: 1.2.1-1~bpo12+1]
pipewire-jack/stable-backports 1.2.4-1~bpo12+1 arm64 [upgradable from: 1.2.1-1~bpo12+1]
pipewire-pulse/stable-backports 1.2.4-1~bpo12+1 arm64 [upgradable from: 1.2.1-1~bpo12+1]
pipewire/stable-backports 1.2.4-1~bpo12+1 arm64 [upgradable from: 1.2.1-1~bpo12+1]
wireplumber/stable-backports 0.5.6-1~bpo12+1 arm64 [upgradable from: 0.4.17-1~bpo12+1]
7.pipewire
等人显然对蓝牙故障负有全部责任。我想这对很多人来说可能“不足为奇”,但我觉得我需要尽可能具体地确定问题的根源。
我的问题是:我怎么把事情搞砸了?我以前从未使用过backports
,我以为当常规渠道“赶上”时,backports
一切apt
都会顺利合并/安装。显然,这里发生的事情并非如此。我需要做什么来解决这个问题?
你没有搞砸这件事,你的假设是正确的。
假设您当前有一个可以运行的系统,有两种方法可以避免升级反向移植的软件包:
bookworm-backports
您可以完全禁用存储库 - 这将阻止对pipewire
&co 的升级,但也会阻止安装任何其他反向移植的软件包(这在您的情况下可能是可取的)。您可以保留当前安装的软件包:
无论哪些存储库可用,这都会将这些软件包保留为其当前版本。
反向移植的工作方式如下(默认情况下,所有这些都可以使用引脚优先级进行调整):
-t bookworm-backports
或其他版本说明符),只要发布版本没有跟上,反向移植的软件包就会自动成为升级的候选者由于反向移植是对给定版本的补充,并且软件包版本在给定版本中不应该发生重大变化(浏览器等少数例外情况除外),因此版本永远无法赶上反向移植。这意味着,一旦您安装了反向移植,您将一直使用该软件包的反向移植,直到升级到下一个主要版本 — 在本例中为 Debian 13。
综上所述,本例中发生的事情是,经过您的测试后,更新的 backport 已发布,最终版本为
pipewire
1.2.4-1~bpo12+1和wireplumber
0.5.6-1~bpo12+1。后者包括一条新闻,您看到该新闻是在 0.5.1-1 中添加的,并已上传到实验版本;因此显示的新闻令人困惑 — 您获得的软件包是合法的 backport 软件包,而不是实验软件包。不幸的是,这最终会导致遇到错误。这是反向移植的妥协——您获得了更新的软件包,但它们的测试不如主版本中的软件包,甚至不如不稳定或测试中的相同软件包。特别是,它们可能嵌入了对生态系统其他部分的假设——例如,一个软件包可以与它所依赖的其他软件包一起运行良好,因为它们存在于不稳定或测试中,而软件包维护者没有意识到它依赖于仅在不稳定或测试中可用的功能;然后,该软件包可能在反向移植中构建良好,但在新的移植环境中失败(甚至部分失败)。如果您愿意,报告错误是值得的!