Как удалить устаревшие пакеты после неудачного обновления выпуска через 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

который удаляет некоторые устаревшие пакеты из старой версии системы.

Кажется, что этот процесс не выполняется, когда происходит сбой автоматического обновления, и я заканчиваю обновление вручную, поэтому устаревшие пакеты из старой версии остаются установленными в системе.

Как я могу запустить процесс «Удалить устаревшие пакеты» вручную после завершения обновления вручную?

Murz
источник

Ответы:

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
kyodake
источник
1
Спасибо, эти команды именно то, что я хочу, главная из них - dpkg -l|grep "^rc"|awk '{print $2}'это показ пакетов для удаления. Странно, что apt-get или aptitude не хотят видеть его для удаления.
Мурц
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 пакетов.
Мурц
1

Я считаю, что этот ответ на несвязанный вопрос может предоставить утилиту и команду, которые, кажется, удаляют больше неиспользуемого материала:

  1. Установите пакет "deborphan".
  2. sudo deborphan | xargs sudo apt-get -y remove --purge
DustWolf
источник