Bagaimana cara menghapus paket-paket usang setelah gagal merilis upgrade melalui do-release-upgrade di Ubuntu?

14

Terkadang, ketika saya memutakhirkan sistem melalui do-release-upgrade, proses pembaruan gagal dan skrip memberitahu saya untuk menyelesaikan proses secara manual melalui dpkg --configure -a. Ini bukan masalah serius - setelah menyelesaikan masalah dependensi secara manual dan menyelesaikan proses pemutakhiran semuanya bekerja dengan baik.

Tetapi do-release-upgradeskrip memiliki proses pembersihan setelah menyelesaikan pemutakhiran:

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

yang menghapus beberapa paket usang dari sistem versi lama.

Tampaknya proses ini tidak berjalan ketika pemutakhiran otomatis gagal dan saya menyelesaikan pemutakhiran secara manual, jadi paket usang dari versi lama tetap diinstal di sistem.

Bagaimana saya bisa menjalankan proses "Hapus paket usang" secara manual setelah menyelesaikan upgrade dengan tangan?

Murz
sumber

Jawaban:

16

Tes ini:

Buka terminal,

Tekan Ctrl+ Alt+T

Menjalankannya:

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
Kyodake
sumber
1
Terima kasih, perintah-perintah itu persis yang saya inginkan, utamanya adalah dpkg -l|grep "^rc"|awk '{print $2}'yang menunjukkan paket untuk dihapus. Ini aneh bahwa apt-get atau aptitude tidak ingin melihatnya untuk dihapus.
Murz
2
Satu-baris perintah cli untuk menghapus paket usang setelah gagal do-release-Upgrade berdasarkan contoh adalah: sudo dpkg -l|grep "^rc"|awk '{print $2}' | xargs sudo apt-get remove -y --purge. Perhatian, perintah ini menghapus paket tanpa konfirmasi, tetapi berguna untuk mengotomatiskan sistem pembersihan dengan cepat.
Murz
Pada sistem saya, '^rc'paket yang bertanda bahkan tidak diinstal, tetapi pemutakhiran gagal tepat sebelum mencari paket yang usang. Jadi jawaban ini sepertinya tidak lengkap. Ini tidak akan menghapus semua paket yang akan do-release-upgrade, jika berhasil.
Ruslan
2

Saya percaya "Hapus paket usang" sebenarnya hanya menjalankan a sudo apt-get autoremove. Cobalah, lihat apakah itu membantu.

Dan Johansen
sumber
2
sudo apt-get autoremovehanya menghapus sebagian kecil dari paket, yang menghapus do-release-upgrade, misalnya do-release-upgradepada sistem yang sama menghapus sekitar 150 paket, tetapi apt-get autoremove- hapus hanya sekitar 5-10 paket.
Murz
1

Saya menemukan bahwa jawaban dari pertanyaan yang tidak terkait ini mungkin menyediakan utilitas dan perintah yang tampaknya menghapus lebih banyak hal yang tidak digunakan:

  1. Instal paket "deborphan".
  2. sudo deborphan | xargs sudo apt-get -y remove --purge
DustWolf
sumber