Як видалити застарілі пакети після невдалого оновлення випуску через do-release-upgrade на 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}'те, що показує пакети для видалення. Це дивно, що apt-get або здатність не хочуть бачити це для видалення.
Мурц

2
Однолинейная клі команди для видалити застарілі пакети після невдалої спроби робити реліз-модернізує засновані на вашому прикладі: sudo dpkg -l|grep "^rc"|awk '{print $2}' | xargs sudo apt-get remove -y --purge. Увага, ця команда видаляє пакети без підтвердження, але корисна для автоматизованих систем швидкого очищення.
Мурц

У моїй системі '^rc'пакети з позначкою навіть не були встановлені, але оновлення не вдалося безпосередньо перед пошуком застарілих пакетів. Тож ця відповідь здається неповною. Це не призведе до видалення всіх пакетів, які були б do-release-upgrade, якщо це вдасться.
Руслан

2

Я вважаю, що "Видалити застарілі пакети" насправді просто працює sudo apt-get autoremove. Спробуйте, подивіться, чи допоможе це.


2
sudo apt-get autoremoveє видалити лише невелику частину пакунків, яка видаляє do-release-upgrade, наприклад, do-release-upgradeз тієї ж системи видаляється близько 150 пакетів, але apt-get autoremove- видаляється лише близько 5-10 пакетів.
Мурц

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.