¿Cómo eliminar paquetes obsoletos después de una actualización de lanzamiento fallida a través de do-release-upgrade en Ubuntu?

14

A veces, cuando actualizo un sistema vía do-release-upgrade, el proceso de actualización falla y el script me dice que termine el proceso manualmente vía dpkg --configure -a. Este no es un problema grave: después de resolver manualmente el problema de dependencias y finalizar el proceso de actualización, todo funciona bien.

Pero el do-release-upgradescript tiene un proceso de limpieza después de finalizar la actualización:

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

que elimina algunos paquetes obsoletos de la versión anterior del sistema.

Parece que este proceso no se ejecuta cuando la actualización automática falla y termino la actualización manualmente, por lo que los paquetes obsoletos de la versión anterior permanecen instalados en el sistema.

¿Cómo puedo ejecutar el proceso "Eliminar paquetes obsoletos" manualmente después de finalizar la actualización a mano?

Murz
fuente

Respuestas:

16

Prueba esto:

Abrir una terminal,

Presione Ctrl+ Alt+T

Ejecutarlo:

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
fuente
1
Gracias, esos comandos es exactamente lo que quiero, el principal de ellos es dpkg -l|grep "^rc"|awk '{print $2}'que muestra los paquetes para eliminar. Es extraño que apt-get o aptitude no quieran verlo para eliminarlo.
Murz
2
Una línea de comandos CLI para los paquetes obsoletos quitan después de que fallara do-release-upgrade basado en su ejemplo es: sudo dpkg -l|grep "^rc"|awk '{print $2}' | xargs sudo apt-get remove -y --purge. Atención, este comando elimina paquetes sin confirmación, pero es útil para automatizar sistemas de limpieza rápidos.
Murz
En mi sistema, los '^rc'paquetes marcados ni siquiera estaban instalados, pero la actualización falló justo antes de buscar paquetes obsoletos. Entonces esta respuesta parece incompleta. Esto no eliminará todos los paquetes que estarían en do-release-upgradecaso de tener éxito.
Ruslan
2

Creo que "Eliminar paquetes obsoletos" en realidad solo ejecuta a sudo apt-get autoremove. Pruébalo, mira si te ayuda.

Dan Johansen
fuente
2
sudo apt-get autoremovees eliminar solo una pequeña parte de los paquetes, que elimina do-release-upgrade, por ejemplo, do-release-upgradeen el mismo sistema, elimina unos 150 paquetes, pero apt-get autoremoveelimina solo unos 5-10 paquetes.
Murz
1

Encuentro que esta respuesta de una pregunta no relacionada podría proporcionar una utilidad y un comando que parece eliminar más cosas no utilizadas:

  1. Instale el paquete "deborphan".
  2. sudo deborphan | xargs sudo apt-get -y remove --purge
DustWolf
fuente