22

Я играл с новой подсистемой Linux на Windows и каким-то образом сломал ее, и теперь большинство внутренних компонентов Ubuntu (apt-get, dpkg и т.д.) Не работают. Все, что я пробую, я получаю одно и то же сообщение ...

    Setting up udev (204-5ubuntu20.19) ...
initctl: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: No such file or directory
runlevel:/var/run/utmp: No such file or directory
 * udev requires devtmpfs support, not started
   ...fail!
invoke-rc.d: initscript udev, action "restart" failed.
dpkg: error processing package udev (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of systemd-services:
 systemd-services depends on udev (>= 175-0ubuntu23); however:
  Package udev is not configured yet.

dpkg: error processing package systemd-services (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of libpam-systemd:amd64:
No apport report written because the error message indicates its a followup error from a previous failure. libpam-systemd:amd64 depends on systemd-services (= 204-5ubuntu20.19); however:
  Package systemd-services is not configured yet.


dpkg: error processing package libpam-systemd:amd64 (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
Errors were encountered while processing:
 udev
 systemd-services
 libpam-systemd:amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)

Любые идеи, как это исправить?

4 ответа4

34

Предупреждение, этот процесс восстановит Lxss в исходную конфигурацию

Чтобы переустановить Lxss, откройте Windows cmd от имени администратора и запустите:

C:\WINDOWS\system32>LxRun.exe /uninstall

Затем:

C:\WINDOWS\system32>LxRun.exe /install
18

Починил это.

Ран:

apt-get remove upstart

затем

apt-get remove udev

затем

apt-get autoremove

и все это, кажется, работает сейчас.

9

Официальный ответ от Microsoft

GitHub:Microsoft/BashOnWindows

Это проблема, которую все начнут видеть. Нам нужно что-то добавить по этому поводу в наших официальных документах.

Как указывает @nuclearmistake, udev - это то, что ломает apt-get, но ошибки не должны вызывать проблем в WSL. Мы обратились к Canonical с просьбой найти лучшее решение, и они рекомендуют следующие изменения:

Напишите следующее в /usr/sbin/policy-rc.d

#!/bin/sh exit 101

chmod +x /usr/sbin/policy-rc.d

dpkg-divert --local --rename --add /sbin /initctl

ln -s /bin /true /sbin /initctl

Я попробовал это сам, и, похоже, работает довольно хорошо.

6

Вот более целенаправленное решение. Создайте скрипт с именем /usr/sbin/policy-rc.d (nano /usr/sbin/policy-rc.d) со следующим содержимым:

#!/bin/sh
case "$1" in
    udev|systemd-logind) exit 101;;
esac

Сохранить и выйти (Ctrl+O Ctrl+X). Пометьте скрипт как исполняемый (chmod +x /usr/sbin/policy-rc.d). Этот скрипт говорит dpkg не пытаться запустить udev или systemd-logind .

После этого вы сможете завершить ранее неисправного dpkg шаг настройки dpkg --configure -a

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