ระบบ Ubuntu เสียหายหลังจากถอนการติดตั้งแพคเกจจำนวนมากโดยไม่ตั้งใจ


20

ฉันบังเอิญลบแพ็คเกจทั้งหมดที่เริ่มต้นด้วยชื่อjpegด้วย:

sudo apt-get remove jpeg*

สิ่งนี้ทำให้หลายสิ่งหลายอย่างหลุดออก Unity, Firefox, Flash player เป็นต้น

ฉันจัดการกู้คืนเดสก์ท็อปและความสามัคคีได้ แต่อย่างใดก็มีหลายอย่างที่ยังบั๊ก ตัวอย่างเช่น.rpmไฟล์และ.tag.gzจะไม่เปิดขึ้นเลย

สิ่งที่ฉันต้องการคือวิธีแก้ไขทุกสิ่งที่ไม่เหมาะสม สิ่งที่เทียบเท่ากับ 'การติดตั้งซ่อม' ด้วยแผ่นดิสก์ windows

มีเคล็ดลับอะไรบ้าง?


1
ฉันอยากจะแนะนำการติดตั้งใหม่ เพียงแค่สำรอง / home ของคุณ / (รวมถึงไฟล์ที่มองไม่เห็น) และใส่ไว้ในการติดตั้งใหม่
พอล Woitaschek

คำตอบ:


35

คุณสามารถติดตั้งubuntu-desktopงาน:

sudo apt-get install ubuntu-desktop^

สิ่งนี้จะติดตั้งแพ็คเกจทั้งหมดของ Ubuntu Desktop มาตรฐานที่คุณลบออกไป มันจะไม่กู้คืนแพ็คเกจที่คุณติดตั้งซึ่งไม่ได้เป็นส่วนหนึ่งของเดสก์ท็อปมาตรฐาน (เช่นจะติดตั้ง Unity และ Firefox แต่ไม่ใช่ Flash player)

ในการติดตั้งแพ็คเกจเหล่านั้นคุณสามารถดูได้ /var/log/apt/history.logและดูสิ่งที่คุณลบออกไป

หมายเหตุ: การติดตั้งubuntu-desktop^ งานไม่เหมือนกับการติดตั้งubuntu-desktop แพคเกจแพคเกจคนแรกจะให้คำแนะนำบางอย่างเพื่อแก้ปัญหา APT ที่เกี่ยวข้องกับแพ็คเกจเสมือนและ APT จะให้อิสระในการเลือกแพ็คเกจ (และจะติดตั้งสิ่งที่ไร้ประโยชน์เช่นนั้นubiquity)

เหตุใดจึงเกิดปัญหาขึ้น apt-get remove jpeg*จะไม่jpegลบทุกแพคเกจเริ่มต้นด้วย มันจะลบแพ็กเกจทั้งหมดที่มีjpeอยู่ในชื่อแทน เพราะนี่คือ apt-get ทำงานร่วมกับการแสดงออกปกติเพื่อให้JPEG *หมายถึงทุกอย่างที่มีJPEตามด้วยศูนย์หรือมากกว่ากรัม


1
เป็นความคิดที่ดีฉันไม่ได้คิดอย่างนั้น ฉันจะสนใจที่จะดูว่ามันจะทำงานที่นี่!
Eliah Kagan

@EliahKagan: ฉันได้ทดสอบใน chroot แพ็คเกจ jpeg * มีผลกับแอปพลิเคชั่นแบบกราฟิกเท่านั้นดังนั้น 'ส่วนผสม' ที่จำเป็น (เช่น NetworkManager สำหรับการเชื่อมต่ออินเทอร์เน็ต APT เทอร์มินัลอีมูเลเตอร์และอื่น ๆ ) ยังคงอยู่ในระบบ OP
Andrea Corbellini

@EliahKagan: แน่นอนฉันได้ตั้งสมมติฐาน (ไม่ชัดเจน) ว่า OP ไม่ได้ลบสิ่งอื่นใด
Andrea Corbellini

2
โปรดรวมคำเตือนว่าอย่าใช้taskselเพื่อลบงาน - ดูtaskel-bug ที่น่ารังเกียจ
guntbert

1
@Atilio: ฉันได้อธิบายความแตกต่างในคำตอบ โปรดดูที่"หมายเหตุ: การติดตั้งงาน ubuntu-desktop ^ นั้นไม่เหมือนกับการติดตั้งแพคเกจ ubuntu-desktop ... "
Andrea Corbellini

8

วิธีที่ดีที่สุดสำหรับคุณในการแก้ไขปัญหานี้อาจเป็นการติดตั้ง Ubuntu ใหม่ (คุณควรสำรองเอกสารก่อนแม้ว่าคุณวางแผนที่จะติดตั้งใหม่โดยไม่ต้องฟอร์แมตใหม่)

หากคุณต้องการลองแก้ไขระบบให้เข้าที่ให้ดูที่ล็อกไฟล์ของตัวจัดการแพ็กเกจเพื่อดูว่าแพ็กเกจใดที่ถูกลบและติดตั้งใหม่:

  • /var/log/dpkg.log (ข้อมูลเต็ม แต่อ่านยาก)
  • /var/log/apt/history.log (ตัวย่อโดยจะบอกคุณทุกแพคเกจลบหรือแก้ไขอย่างอื่น - น่าจะเป็นทางออกที่ดีที่สุดของคุณ)
  • /var/log/apt/term.log(ถ้าคุณลบแพ็กเกจด้วยapt-getในเทอร์มินัลสิ่งนี้ควรแสดงสิ่งที่คุณเห็นในตอนนั้นรวมถึงรายการของแพ็คเกจที่จะถูกลบ - ดังนั้นนี่อาจเป็นวิธีที่ดีที่สุด)

การติดตั้งแพ็กเกจใหม่ที่ชื่อขึ้นต้นด้วยjpegจะไม่ทำงานเนื่องจากแพ็คเกจที่ถูกลบออกไปส่วนใหญ่ (เกือบจะแน่นอนที่สุด) ถูกลบออกเพราะพวกเขาพึ่งพาแพ็คเกจเหล่านั้น

ในอนาคตฉันขอแนะนำให้ตรวจสอบผลการถอนการติดตั้งแพคเกจอย่างระมัดระวัง หากคุณทำงานจากบรรทัดคำสั่งคุณจะได้รับการแจ้งเตือนเสมอ (ยกเว้นว่าคุณใช้-yตัวเลือกซึ่งโดยปกติจะไม่แนะนำให้ใช้ตัวเลือกนั้นจนกว่าคุณจะรู้ว่าคุณกำลังทำอะไรอยู่โดยเฉพาะการลบออก)

วิธีหนึ่งในการตรวจสอบผลกระทบของการดำเนินการจัดการแพ็กเกจดำเนินการด้วยapt-getโดยไม่ต้องเสี่ยงกับพวกเขาที่เกิดขึ้นคือการทำงานแทนapt-get -s sudo apt-getนี่เป็นการจำลองการกระทำที่ระบุและรายงานว่าแพคเกจใดบ้างที่จะได้รับผลกระทบจากผลลัพธ์และวิธีการ


1

ฉันทำงานsudo apt-get purge wine*บน Ubuntu 15.10 ดังนั้นจึงไม่มีตัวเลือกกราฟิกในการบูตเฉพาะเทอร์มินัลการเข้าสู่ระบบ

ดังที่ Eliah Kagan แนะนำให้ฉันใช้ข้อมูลจาก/var/log/apt/history.log ฉันเรียกใช้ nano บน history.log และสร้างสคริปต์ง่าย ๆ ที่บรรจุอยู่sudo apt-get installในแพ็คเกจที่ถูกลบทั้งหมดที่พบในบรรทัด:

Purge: evolution:amd64 (3.16.5-1ubuntu3.1), libtotem-plparser18:amd64 (3.10.5-1) ...... etc

แต่ก่อนอื่นฉันต้องลบข้อความด้วยตนเองระหว่างทั้งหมด: และรวมถึง:,

ในขั้นตอนนี้สคริปต์ใหม่จะมีประโยชน์เนื่องจากแพ็กเกจมีหลายร้อยรายการ หลังจากนั้นฉันเรียกใช้สคริปต์และลบบางส่วนUnable to locate packages(ซึ่งฉันติดตั้งด้วยตนเอง) เรียกใช้สคริปต์อีกครั้งและนั่นก็คือ ทุกอย่างทำงานได้ดี ... โชคดี


0

ติดตั้งแพ็คเกจubuntu-desktopติดตั้ง ubuntu-desktop

sudo apt-get update && sudo apt-get install ubuntu-desktop

มันจะติดตั้งแพ็คเกจที่จำเป็นสำหรับระบบของคุณ


สิ่งนี้ล้มเหลวสำหรับฉันเนื่องจากไม่ได้ติดตั้งการพึ่งพาของ Ubuntu-desktop
kevinkayaks

0

ฉันลบออกโดยไม่ได้ตั้งใจlibssl1.0.0และเครื่องของฉันพิการ ในการกู้คืนฉันทำ:

  1. สำรองข้อมูลบันทึกของสิ่งที่ถูกลบ cp /var/log/apt/term.log ~/libssl.term.log
  2. ลบบรรทัดที่ไม่เกี่ยวข้องกับการดำเนินการ libssl vi ~/libssl.term.log
  3. หากระบบเครือข่ายขาดหายไป (ไม่สามารถทำได้ping google.com) ให้รีบูตในโหมดการกู้คืนและเปิดใช้งานเครือข่าย
  4. ติดตั้งแพ็กเกจที่ลบใหม่อีกครั้ง cat ~/libssl.term.log | grep ^Removing | sed -e 's/^Removing //g;s/ (.*$//g;/diversion of/d;/dangling symlinks/d' | xargs sudo apt-get -y install

0

นี่คือสคริปต์หลามขนาดเล็กที่คุณสามารถเขียน (ใช้ไม่ได้) /var/log/apt/history.logสตริงแพคเกจจากมวลถอนการติดตั้งของคุณที่มีอยู่ใน มันจะส่งออกสตริงที่คุณสามารถคัดลอกวางลงในคำสั่ง apt-get install เพื่อที่จะติดตั้งแพ็กเกจที่ถูกลบทั้งหมดได้อย่างง่ายดาย

import re

apt_str = u"INSERT YOUR PACKAGE STRING HERE, BETWEEN THE QUOTES"

match =  re.findall(r'([\w\d\.-]+).+? \(.+?\)', apt_str)
print " ".join(match)

จุลภาค? คุณหมายถึงคำพูดใช่ไหม
wjandrea

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