我一直在 Windows 上使用新的 Linux 子系统,但不知何故我把它弄坏了,现在 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)
任何想法如何解决这一问题?
答案1
警告,此过程将恢复 Lxss 到初始配置
要重新安装 Lxss,请cmd
以管理员身份打开 Windows 并运行:
C:\WINDOWS\system32>LxRun.exe /uninstall
然后:
C:\WINDOWS\system32>LxRun.exe /install
答案2
修复。
冉:
apt-get remove upstart
然后
apt-get remove udev
然后
apt-get autoremove
现在一切似乎都正常了。
答案3
微软官方回应
这是一个每个人都会开始看到的问题。我们需要在官方文档中添加一些相关内容。
正如 @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
我已经亲自尝试过这个并且看起来效果很好。
答案4
/usr/sbin/policy-rc.d
这里有一个比较有针对性的解决方案,创建一个名为( )的脚本,nano /usr/sbin/policy-rc.d
内容如下:
#!/bin/sh
case "$1" in
udev|systemd-logind) exit 101;;
esac
保存并退出(++ Ctrl)。将脚本标记为可执行文件()。此脚本告知不要尝试启动或。O CtrlXchmod +x /usr/sbin/policy-rc.d
dpkg
udev
systemd-logind
然后您将能够完成之前失败的dpkg
配置步骤(dpkg --configure -a
)。