我有运行 Ubuntu 16.04 的 Windows Subsystem for Linux(但带有 Linux Mint 19 软件包)。有一次,我错误地安装了另一个内核,它也安装了grub-pc
和friendly-recovery
。我设法grub-pc
用删除了apt
,但friendly-recovery
卡住了。我尝试了以下方法来删除它:
cat > /usr/sbin/policy-rc.d <<EOF
#!/bin/sh
exit 101
EOF
chmod +x /usr/sbin/policy-rc.d
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl
#### Next command tried
apt remove friendly-recovery
#### Next command tried
dpkg --remove --force-remove-reinstreq friendly-recovery
#### Finally...
dpkg --purge --force-remove-reinstreq friendly-recovery
它们都没有被删除friendly-recovery
。我总是得到这个日志输出:
(Reading database ... 145035 files and directories currently installed.)
Removing friendly-recovery (0.2.38) ...
/usr/sbin/grub-probe: error: failed to get canonical path of `rootfs'.
dpkg: error processing package friendly-recovery (--purge):
installed friendly-recovery package post-removal script subprocess returned error exit status 1
Errors were encountered while processing:
friendly-recovery
GitHub 上的这个解决方案没有解决我的问题。
我现在无法更改已安装的软件包(apt
并且dpkg
总是出现错误处理friendly-recovery
,无论我尝试安装/删除什么软件包)。
我该怎么做才能解决这个问题?除了完全重新安装 WSL,我想不出其他办法。
答案1
根据输出,删除后脚本子进程失败。
friendly-recovery
删除后的脚本是/var/lib/dpkg/info/friendly-recovery.postrm
。
您可以通过用以下内容替换其全部内容来绕过此脚本:
#!/bin/sh
exit 0
以下是一系列可以为您执行此操作并删除的命令friendly-recovery
:
echo -e '#!/bin/sh\nexit 0' | sudo tee /var/lib/dpkg/info/friendly-recovery.postrm
sudo chmod +x /var/lib/dpkg/info/friendly-recovery.postrm
sudo dpkg -P friendly-recovery