У меня есть Windows Subsystem для Linux под управлением Ubuntu 16.04 (но с пакетами 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 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .