จะลบแพ็กเกจที่ล้าสมัยหลังจากการอัพเกรดล้มเหลวผ่านการอัพเกรด do-release บน Ubuntu ได้อย่างไร?


14

บางครั้งเมื่อผมอัพเกรดระบบผ่านกระบวนการปรับปรุงล้มเหลวและสคริปต์ที่บอกให้ผมเสร็จสิ้นขั้นตอนด้วยตนเองผ่านทางdo-release-upgrade dpkg --configure -aนี่เป็นปัญหาที่ไม่ร้ายแรง - หลังจากแก้ไขปัญหาการอ้างอิงด้วยตนเองแล้วและกระบวนการอัปเกรดการตกแต่งทั้งหมดทำงานได้ดี

แต่do-release-upgradeสคริปต์มีกระบวนการล้างข้อมูลหลังจากเสร็จสิ้นการอัพเกรด:

Remove obsolete packages?  
XXX packages are going to be removed.  
Continue [yN]  Details [d]y

ซึ่งจะลบแพ็กเกจที่ล้าสมัยออกจากระบบเวอร์ชันเก่า

ดูเหมือนว่ากระบวนการนี้จะไม่ทำงานเมื่อการอัปเกรดอัตโนมัติล้มเหลวและฉันเสร็จสิ้นการอัพเกรดด้วยตนเองดังนั้นแพคเกจที่ล้าสมัยจากเวอร์ชันเก่ายังคงติดตั้งอยู่ในระบบ

ฉันจะเรียกใช้กระบวนการ "ลบแพคเกจล้าสมัย" ได้ด้วยตนเองหลังจากเสร็จสิ้นการอัพเกรดด้วยมือได้อย่างไร

คำตอบ:


16

ทดสอบสิ่งนี้:

เปิดสถานี

กดCtrl+ Alt+T

เรียกใช้:

sudo -i

apt-get update

apt-get autoremove

apt-get clean

UNUSCONF=$(dpkg -l|grep "^rc"|awk '{print $2}')

apt-get remove --purge $UNUSCONF

NEWKERNEL=$(uname -r|sed 's/-*[a-z]//g'|sed 's/-386//g')

ADDKERNEL="linux-(image|headers|ubuntu-modules|restricted-modules)"

METAKERNEL="linux-(image|headers|restricted-modules)-(generic|i386|server|common|rt|xen)"

UNUSKERNELS=$(dpkg -l|awk '{print $2}'|grep -E $ADDKERNEL |grep -vE $METAKERNEL|grep -v $NEWKERNEL)

apt-get remove --purge $UNUSKERNELS

update-grub

1
ขอบคุณคำสั่งเหล่านั้นตรงตามที่ฉันต้องการหลักของพวกเขาคือการdpkg -l|grep "^rc"|awk '{print $2}'แสดงแพคเกจที่จะลบ นี่เป็นเรื่องแปลกที่คนฉลาดรับหรือเก่งไม่อยากเห็นมันเพื่อลบออก
Murz

2
หนึ่งบรรทัดคำสั่ง CLI sudo dpkg -l|grep "^rc"|awk '{print $2}' | xargs sudo apt-get remove -y --purgeสำหรับแพคเกจล้าสมัยลบหลังจากที่ล้มเหลวไม่ปล่อยอัปเกรดขึ้นอยู่กับตัวอย่างของคุณคือ: ข้อควรระวังคำสั่งนี้ลบแพ็กเกจโดยไม่มีการยืนยัน แต่มีประโยชน์สำหรับการล้างข้อมูลบนระบบอัตโนมัติอย่างรวดเร็ว
Murz

ในระบบของฉัน'^rc'แพ็คเกจที่ทำเครื่องหมายไว้ไม่ได้ถูกติดตั้ง แต่การอัพเกรดล้มเหลวทันทีก่อนค้นหาแพ็คเกจล้าสมัย ดังนั้นคำตอบนี้ดูเหมือนจะไม่สมบูรณ์ สิ่งนี้จะไม่ลบแพ็คเกจทั้งหมดที่ควรจะเป็นdo-release-upgradeถ้ามันประสบความสำเร็จ
Ruslan

2

ผมเชื่อว่า "ลบแพคเกจล้าสมัย" sudo apt-get autoremoveจริงเพียงแค่ทำงาน ลองดูว่าช่วยได้ไหม


2
sudo apt-get autoremoveถูกลบเพียงส่วนเล็ก ๆ ของแพ็คเกจที่ลบdo-release-upgradeตัวอย่างเช่นdo-release-upgradeในระบบเดียวกันจะลบแพ็กเกจประมาณ 150 แพ็กเกจ แต่apt-get autoremove- ลบเพียง 5-10 แพ็กเกจเท่านั้น
Murz

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