ฉันจะลบการปรับปรุงทั้งหมดที่ติดตั้งหลังจากวันที่ระบุได้อย่างไร


12

ฉันอนุญาตให้ตัวจัดการอัปเดตติดตั้งอัปเดต 200 Mib และฉันคิดว่าการอัปเดตเหล่านี้ทำให้ไดรเวอร์กราฟิกของฉันมีปัญหา ดังนั้นฉันต้องการวิธีลบการอัปเดตที่ติดตั้งตั้งแต่วันที่ 30 พฤษภาคม 12 เป็นต้นไป (หรือวันอื่น ๆ ) หากฉันต้องลบมันออกด้วยตนเอง (ในกรณีที่ถอนการติดตั้งทีละตัว) คุณจะได้รับคำแนะนำในการทำเช่นนั้น

คำตอบ:


8

มีทางเลือกวิธีบรรทัดคำสั่งเพื่อรับประวัติการติดตั้ง

ผู้จัดการแพคเกจaptดูเหมือนว่าจะเข้าสู่ระบบทุกอย่าง/var/log/apt/history.logและ/var/log/apt/term.logรวมถึงการแยกทุกอย่างโดย datestamps ทั้งคู่มีข้อมูลที่คล้ายกันและใช้งานได้ แต่term.logมีทั้งความละเอียดมากขึ้นและไม่ได้ระบุอย่างชัดเจนถึงสิ่งที่ริเริ่มการดำเนินการ

บันทึกประวัติ

/var/log/apt/history.logเก็บสรุปย่อของการaptทำงานแต่ละครั้ง นี่คือตัวอย่างของฉันสำหรับการติดตั้งด้วยตนเอง:

Start-Date: 2014-08-22  17:17:52
Commandline: apt-get install nautilus-dropbox
Install: nautilus-dropbox:amd64 (1.6.1-1), python-gpgme:amd64 (0.3-0ubuntu3, automatic)
End-Date: 2014-08-22  17:19:13

Commandline:ข้อมูลบ่งชี้ว่าเรียกการทำงานและในกรณีของการติดตั้งทำโดยผู้จัดการการปรับปรุงควรมีลักษณะบางอย่างเช่น:

Commandline: aptdaemon role='role-commit-packages' sender=':1.131'

... และมีรายการแพ็กเกจของคุณเรียงลำดับตามวันที่วิธีการและการกระทำ (ติดตั้ง / อัพเกรด / ลบ) โปรดทราบว่าหากคุณต้องการส่งแพคเกจเหล่านี้กลับไปที่apt-get remove ...:

  • ในฐานะที่เป็นที่กล่าวถึงนี้อย่างสมบูรณ์เอาแพคเกจมากกว่าพวกเขาย้อนกลับ ข้อมูลในบันทึกอาจถูกนำมาใช้อย่างแน่นอนเพื่อดูแพ็คเกจที่อัพเกรด แต่การย้อนกลับเป็นเรื่องอื่น
  • คุณจะต้องดึงออกจากวงเล็บเนื้อหาของพวกเขาและคั่นด้วยเครื่องหมายจุลภาคจากรายการผ่านทางวิธีที่คุณต้องการการจัดการข้อความ (เช่นsed, vimฯลฯ ) ดังนั้นหากฉันต้องการลบแพ็คเกจในตัวอย่างด้านบนฉันสามารถใช้บรรทัดได้โดยตรง:

    sudo apt-get remove nautilus-dropbox:amd64 python-gpgme:amd64
    

เทอร์มินัลบันทึก

โดยทั่วไปแล้ว/var/log/apt/term.logมีโครงสร้างที่สะดวกน้อยกว่า แต่เพื่อความสมบูรณ์คุณสามารถได้รับข้อมูลเดียวกัน เทอร์มินัลเอาต์พุตถูกคั่นด้วยการประทับเวลาอีกครั้งและการติดตั้งแพคเกจสามารถรับได้จากบรรทัดของแบบฟอร์มต่อไปนี้:

Selecting previously unselected package nautilus-dropbox.

ต่อไปนี้เป็นวิธีหนึ่งในการพิมพ์รายการแพ็คเกจที่ติดตั้งไปยังเทอร์มินัลสำหรับบันทึกทั้งหมด:

$ awk '/^Selecting/ {gsub(/\./,""); print $5}' /var/log/apt/term.log

สิ่งนี้สามารถปรับหรือขยายเพื่อรับการติดตั้งในช่วงวันที่


1
ในกรณีนี้สามารถทำให้ชีวิตของใครบางคนได้ง่ายขึ้นที่นี่ sed snippet ผมใช้ในการลบ parens และจุลภาคจากแพคเกจที่ระบุไว้ /var/log/apt/history.log เพื่อที่ฉันจะให้อาหารพวกเขาเพื่อ:apt-get remove sed 's/ ([^)]*)//g' | sed 's/,//g')
Apteryx

4

หมายเหตุ: ต่างจาก Windows การลบการอัปเดตใน Ubuntu โดยปกติจะเป็นการถอนการติดตั้งแพ็กเกจ / โปรแกรมนั้นและจะไม่เพียงแค่เปลี่ยน (หรือดาวน์เกรด) เป็นเวอร์ชั่นก่อนหน้า

คุณสามารถเปิดศูนย์ซอฟต์แวร์ Ubuntu และคลิกที่ประวัติ

ป้อนคำอธิบายรูปภาพที่นี่

เมื่อคุณทำเช่นนั้นคลิกที่การปรับปรุงและที่จะแสดงการปรับปรุงทั้งหมดที่ติดตั้งในระบบของคุณ เมื่อคุณพบการอัปเดตที่คุณต้องการนำออกคุณจะต้องดำเนินการด้วยตนเอง

ป้อนคำอธิบายรูปภาพที่นี่

ในการลบคุณสามารถใช้ Synaptic Package Manager หากคุณยังไม่ได้ติดตั้งคุณสามารถติดตั้งได้


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