我有一台装有 WSL2/Ubuntu 20.04 的 PC。我最近尝试在其上安装一个软件包(戴尔srvadmin
软件包)。安装进行到一半时失败了,因为 WSL2systemd
上没有安装。
这使得软件包处于半安装/损坏状态,我无法使用 witherdpkg
或apt
例如删除/清除等。
tim@DESKTOP-Q35QTRS:~/interlocutor$ sudo dpkg -r --force-all srvadmin-hapi
(Reading database ... 54160 files and directories currently installed.)
Removing srvadmin-hapi (9.3.2) ...
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
dpkg: error processing package srvadmin-hapi (--remove):
installed srvadmin-hapi package pre-removal script subprocess returned error exit status 1
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
dpkg: error while cleaning up:
installed srvadmin-hapi package post-installation script subprocess returned error exit status 1
Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
Errors were encountered while processing:
srvadmin-hapi
tim@DESKTOP-Q35QTRS:~/interlocutor$
那么我是否可以手动执行dpkg
无法执行的步骤或以其他方式删除损坏的包?
答案1
编辑/var/lib/dpkg/info/srvadmin-hapi.prerm
,然后插入set -x
为第二行(即紧接该#!
行之后)。编辑此脚本需要以 root 身份完成。
然后再跑dpkg -r --force-all srvadmin-hapi
。这将向您显示 .prerm 脚本内发生的情况,以及具体哪个命令失败。这应该为您提供足够的信息来解决问题并删除软件包。
或者,对于强力“修复”,如果 .prerm 看起来不那么重要(或者它所做的唯一重要的事情是执行systemctl stop srvadmin-hapi
或systemctl status
或类似),则只需插入exit 0
为.prerm 脚本。然后您应该能够清除该包而不会出现其他问题。