如何从 Debian 反向移植卸载软件包(不是重复的 Q)

如何从 Debian 反向移植卸载软件包(不是重复的 Q)

我知道这里有几个问题与我似乎在问的问题相同。我已经尝试过这些建议1&2,但它们在这种情况下不起作用。这是发生的事情:

pi@raspberrypi0w:~ $ sudo apt -t bullseye-backports install udev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libudev1
The following packages will be upgraded:
  libudev1 udev
2 upgraded, 0 newly installed, 0 to remove and 35 not upgraded.
Need to get 1,654 kB of archives.
After this operation, 511 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://deb.debian.org/debian bullseye-backports/main armhf udev armhf 252.5-2~bpo11+1 [1,554 kB]
Get:2 http://deb.debian.org/debian bullseye-backports/main armhf libudev1 armhf 252.5-2~bpo11+1 [100 kB]
Fetched 1,654 kB in 1s (1,267 kB/s)
Reading changelogs... Done
(Reading database ... 43648 files and directories currently installed.)
Preparing to unpack .../udev_252.5-2~bpo11+1_armhf.deb ...
Unpacking udev (252.5-2~bpo11+1) over (247.3-7+rpi1+deb11u2) ...
Preparing to unpack .../libudev1_252.5-2~bpo11+1_armhf.deb ...
Unpacking libudev1:armhf (252.5-2~bpo11+1) over (247.3-7+rpi1+deb11u2) ...
Setting up libudev1:armhf (252.5-2~bpo11+1) ...
Setting up udev (252.5-2~bpo11+1) ...
Segmentation fault
Job for systemd-udevd.service failed because a fatal signal was delivered to the control process.
See "systemctl status systemd-udevd.service" and "journalctl -xe" for details.
invoke-rc.d: initscript udev, action "restart" failed.
● systemd-udevd.service - Rule-based Manager for Device Events and Files
     Loaded: loaded (/lib/systemd/system/systemd-udevd.service; static)
     Active: activating (start) since Tue 2024-04-09 07:36:27 UTC; 130ms ago
TriggeredBy: ● systemd-udevd-control.socket
             ● systemd-udevd-kernel.socket
       Docs: man:systemd-udevd.service(8)
             man:udev(7)
   Main PID: 8773 ((md-udevd))
      Tasks: 1
        CPU: 45ms
     CGroup: /system.slice/systemd-udevd.service
             └─8773 (md-udevd)

Apr 09 07:36:28 raspberrypi0w systemd[1]: Stopped Rule-based Manager for Device Events and Files.
Apr 09 07:36:28 raspberrypi0w systemd[1]: Starting Rule-based Manager for Device Events and Files...
Apr 09 07:36:28 raspberrypi0w systemd[1]: systemd-udevd.service: Main process exited, code=killed, status=11/SEGV
Apr 09 07:36:28 raspberrypi0w systemd[1]: systemd-udevd.service: Failed with result 'signal'.
Apr 09 07:36:28 raspberrypi0w systemd[1]: Failed to start Rule-based Manager for Device Events and Files.
Apr 09 07:36:28 raspberrypi0w systemd[1]: systemd-udevd.service: Scheduled restart job, restart counter is at 5.
Apr 09 07:36:28 raspberrypi0w systemd[1]: Stopped Rule-based Manager for Device Events and Files.
Apr 09 07:36:28 raspberrypi0w systemd[1]: systemd-udevd.service: Start request repeated too quickly.
Apr 09 07:36:28 raspberrypi0w systemd[1]: systemd-udevd.service: Failed with result 'signal'.
Apr 09 07:36:28 raspberrypi0w systemd[1]: Failed to start Rule-based Manager for Device Events and Files.
dpkg: error processing package udev (--configure):
 installed udev package post-installation script subprocess returned error exit status 1
Processing triggers for libc-bin (2.31-13+rpt2+rpi1+deb11u8) ...
Processing triggers for man-db (2.9.4-2) ...
Processing triggers for initramfs-tools (0.140) ...
Errors were encountered while processing:
 udev
E: Sub-process /usr/bin/dpkg returned an error code (1)

尝试的“恢复”并不是很有趣:

pi@raspberrypi0w:~ $ apt install ${udev}/bullseye
Illegal instruction

我尝试了其他一些“回归”:

pi@raspberrypi0w:~ $ sudo apt install udev
Illegal instruction
pi@raspberrypi0w:~ $ sudo apt-get install udev/stable
Illegal instruction
pi@raspberrypi0w:~ $ sudo apt-get install udev/old-stable
Illegal instruction

“分段错误”——听起来很严重:)。我不确定这是什么意思;即系统是否自动拒绝udev升级并自动恢复? ——或者是我介入了?我等了几分钟并尝试了这个:

$ systemctl status systemd-udevd.service
● systemd-udevd.service - Rule-based Manager for Device Events and Files
     Loaded: loaded (/lib/systemd/system/systemd-udevd.service; static)
     Active: failed (Result: signal) since Tue 2024-04-09 07:36:28 UTC; 28min ago
TriggeredBy: ● systemd-udevd-control.socket
             ● systemd-udevd-kernel.socket
       Docs: man:systemd-udevd.service(8)
             man:udev(7)
    Process: 8776 ExecStart=/lib/systemd/systemd-udevd (code=killed, signal=SEGV)
   Main PID: 8776 (code=killed, signal=SEGV)
        CPU: 199ms

Apr 09 07:36:28 raspberrypi0w systemd[1]: systemd-udevd.service: Scheduled restart job, restart counter is at 5.
Apr 09 07:36:28 raspberrypi0w systemd[1]: Stopped Rule-based Manager for Device Events and Files.
Apr 09 07:36:28 raspberrypi0w systemd[1]: systemd-udevd.service: Start request repeated too quickly.
Apr 09 07:36:28 raspberrypi0w systemd[1]: systemd-udevd.service: Failed with result 'signal'.
Apr 09 07:36:28 raspberrypi0w systemd[1]: Failed to start Rule-based Manager for Device Events and Files.

我昨晚有一个很好的(图像)备份,所以如果我杀死了我的操作系统,我可以恢复。但是,如果可能的话,我更愿意在不求助于备份的情况下修复此问题。

我应该怎么办?

答案1

在能够运行的设置上udev,您发现的其他帖子确实提供了将软件包升级恢复到向后移植的正确方法:

sudo apt install udev/bullseye

或者可能

sudo apt install udev/oldstable

(使用适当的代号或同义词)。这里有一个警告,Debian 不支持软件包降级;它们在大多数情况下都能正常工作,但如果不能正常工作,也不是一个错误。

你不能这样做,因为udev你不会跑。你最终会遇到这种情况,因为 Debianarmhf架构以 ARMv7 为目标,而第一代 Raspberry Pi(包括 Zero W)则实现 ARMv6;这些系统上合适的 Debian 架构是armel。作为一般规则,您不能将 Debian 向后移植与其他发行版混合搭配,即使它是 Debian 衍生版本。 Raspbian 的情况更是如此,因为架构定义不同。

要在不重新安装的情况下解决此问题,您必须下载适当的udev软件包,并手动提取其二进制文件;然后它们就可以使用了,这将允许正确地恢复包。

鉴于您热衷于使用向后移植的软件包,您最好重新安装Raspberry Pi 的 Debian 映像。 (这将为您提供比 Debian 11 和向后移植更新的软件包,因此您甚至可能不需要向后移植!)

相关内容