我打破了Windows Linux子系统(Windows 10上Ubuntu上的Bash)。Linux帮助?


22

我一直在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)

任何想法如何解决这一问题?


是否有“重置”或卸载/重新安装选项?那可能是最简单,最快的。你知道发生了什么事吗?清除根(/)或其他内容?
Xen2050 '16

1
AskUbuntu,尝试: sudo apt-get install upstart-sysv 速战速决-该职位有一个链接到“推荐”的修复为好。不确定是否存在相同的问题,但看起来可能相关。
tanner


1
@ Ramhound我不问如何在Windows 10的Ubuntu上重新安装Bash,我问如何解决此问题。我从未在Ubuntu中遇到过这个问题。如果核能解决了问题,那么当他们解决全球变暖问题时,我就不会在身边
Mike Pengelly 2016年

1
@Ramhound但是我没有回答我的问题。这就像说“每次收到错误消息时都重新安装Windows”或“每次听到噪音时都购买新车”一样。
Mike Pengelly

Answers:


34

警告,此过程会将Lxss恢复到初始配置

要重新安装Lxss,请cmd以管理员身份打开Windows 并运行:

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

然后:

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

1
我没有将其标记为答案,因为这是解决我所遇到问题的核方法。是的,它可以解决这个问题(理论上,我没有尝试过),但是我修复它的方式纠正了我不出核的确切问题。但是如果我仍然有问题,如果您想节省时间,我会推荐这种方法。尽管我怀疑将来人们会在每次出现问题时重新配置Linux子系统。
Mike Pengelly

问题出在Ubuntu子系统本身。重新安装它不会解决任何问题
Panagiotis Kanavos 16-4-22

2
@PanagiotisKanavos为我们这些通过Google查找问题的人(在我们的安装中造成了混乱):我可以向您保证,答案还是非常感谢!
Marc Gravell

2
你们是对的,这不是答案,我们应该将其用作最后的选择。
乔纳斯(Jonas)

我得到一个Access is denied.当我运行C:\WINDOWS\system32>LxRun.exe /uninstall即使CMD会话正在运行“系统管理员”。有任何想法吗?
fredrik '16

18

固定它。

然:

apt-get remove upstart

然后

apt-get remove udev

然后

apt-get autoremove

一切似乎都在工作。


1
当我安装x11(太新的版本)时必须已经安装了... btw x服务器必须在Windows而不是linux子系统中运行。然后通过运行DISPLAY = 0来转发应用程序:firefox
Mike Pengelly,2016年

9

微软的官方回应

github:微软/ 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.dnano /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不要尝试启动udevsystemd-logind

然后,您将能够完成之前失败的dpkg配置步骤(dpkg --configure -a)。


2
这是可以通过解释发生了什么,问题中的“某种程度上”实际上是什么以及这一系列步骤如何解决而得到改善的答案。 这是一个要使用的指针这是另一个
JdeBP '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.