ฉันยากจน Windows Linux Subsystem (Bash บน Ubuntu บน Windows 10) Linux ช่วยด้วย?


22

ฉันได้เล่นกับระบบย่อย linux ใหม่บน Windows และฉันได้ทำลายมันและตอนนี้ internals ส่วนใหญ่ของ Ubuntu (apt-get, dpkg, etc) ไม่ทำงาน ทุกสิ่งที่ฉันลองทำบางสิ่งฉันได้รับข้อความเดียวกัน ...

    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)

แนวคิดใดที่จะแก้ไขปัญหานี้


มีตัวเลือก "รีเซ็ต" หรือถอนการติดตั้ง / ติดตั้งใหม่หรือไม่? นั่นอาจเป็นวิธีที่ง่ายที่สุดและเร็วที่สุด มีความคิดอะไรที่คุณทำเพื่อให้สิ่งนี้เกิดขึ้น? ลบ root ( /) หรืออะไรบางอย่าง?
Xen2050

1
ต่อAskUbuntuให้ลองใช้: sudo apt-get install upstart-sysv สำหรับการแก้ไขด่วน - โพสต์นั้นมีลิงก์ไปยังการแก้ไข "แนะนำ" เช่นกัน ไม่แน่ใจว่าเป็นปัญหาเดียวกัน แต่ดูเหมือนว่าอาจเกี่ยวข้องกัน
ฟอกหนัง


1
@ Ramhound ฉันไม่ได้ถามวิธีติดตั้ง Bash บน Ubuntu บน Windows 10 ฉันถามวิธีแก้ไขปัญหา ฉันไม่เคยมีปัญหานี้ใน Ubuntu จริงๆ ถ้าการใช้นิวเคลียร์กำลังแก้ไขปัญหาฉันก็ไม่อยากอยู่ใกล้ ๆ เมื่อพวกเขาแก้ไขปัญหาโลกร้อน
Mike Pengelly

1
@ แรมฮาวด์ แต่ฉันไม่ตอบคำถาม มันเหมือนกับการพูดว่า "ติดตั้ง windows ใหม่ทุกครั้งที่คุณได้รับข้อความแสดงข้อผิดพลาด" หรือ "ซื้อรถใหม่ทุกครั้งที่ได้ยินเสียง" ... มันแก้ปัญหาได้ แต่ไม่ใช่วิธีแก้ปัญหาที่ใช้งานได้จริง
Mike Pengelly

คำตอบ:


34

คำเตือนกระบวนการนี้จะคืนค่า Lxss ให้เป็นค่าเริ่มต้น

ในการติดตั้ง Lxss ใหม่ให้เปิด Windows cmdในฐานะผู้ดูแลระบบและเรียกใช้:

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

แล้ว:

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

1
ฉันไม่ได้ทำเครื่องหมายว่านี่เป็นคำตอบเพราะมันเป็นวิธีการทางนิวเคลียร์ของปัญหาที่ฉันมี ใช่มันจะแก้ไขได้ (ตามทฤษฎีแล้วฉันไม่ได้ลอง) แต่วิธีที่ฉันแก้ไขมันแก้ไขปัญหาที่แน่นอนของฉันโดยไม่ต้องใช้นิวเคลียร์ แต่ถ้าฉันยังคงมีปัญหาฉันอยากจะแนะนำวิธีการนี้ถ้าคุณต้องการประหยัดเวลา ในอนาคตแม้ว่าฉันจะสงสัยว่าคนจะต้องการกำหนดค่าระบบย่อย Linux อีกครั้งทุกสิ่งที่ผิดพลาด
Mike Pengelly

ปัญหาเกิดขึ้นกับระบบย่อยของ Ubuntu เอง การติดตั้งใหม่จะไม่แก้ไขอะไรเลย
Panagiotis Kanavos

2
@PanagiotisKanavos สำหรับพวกเราในการค้นหาคำถามผ่านทาง google (มีความยุ่งเหยิงในการติดตั้งของเรา): ฉันสามารถมั่นใจได้ว่าคำตอบของคุณยังคงชื่นชมอย่างมาก!
Marc Gravell

2
พวกคุณพูดถูกนี่ไม่ใช่คำตอบและเราควรใช้สิ่งนี้เป็นตัวเลือกสุดท้าย
Jonas

ฉันได้รับAccess is denied.เมื่อฉันเรียกใช้C:\WINDOWS\system32>LxRun.exe /uninstallแม้ว่าเซสชั่น cmd จะถูกเรียกใช้ "ในฐานะผู้ดูแลระบบ" ความคิดใด ๆ
fredrik

18

ซ่อมมัน.

Ran:

apt-get remove upstart

แล้วก็

apt-get remove udev

แล้วก็

apt-get autoremove

และดูเหมือนว่าทั้งหมดจะทำงานตอนนี้


1
ต้องติดตั้งเมื่อฉันติดตั้ง x11 (เวอร์ชันใหม่เกินไป) ... เซิร์ฟเวอร์ btw x ต้องทำงานใน windows ไม่ได้อยู่ในระบบย่อย linux และจากนั้นคุณส่งต่อแอปพลิเคชันด้วยการเรียกใช้ DISPLAY = 0: firefox
Mike Pengelly

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) ทำเครื่องหมายสคริปต์เป็น executable ( chmod +x /usr/sbin/policy-rc.d) สคริปต์นี้จะบอกdpkgไม่ได้ที่จะพยายามที่จะเริ่มต้นหรือudevsystemd-logind

จากนั้นคุณจะสามารถทำตามdpkgขั้นตอนการกำหนดค่าที่ล้มเหลวก่อนหน้านี้( dpkg --configure -a)


2
นี่คือคำตอบที่สามารถปรับปรุงได้โดยการอธิบายสิ่งที่เกิดขึ้นสิ่งที่ "อย่างใด" ในคำถามเป็นจริงและขั้นตอนชุดนี้อยู่อย่างไร นี่คือตัวชี้หนึ่งที่จะใช้ นี่เป็นอีก
JdeBP
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.