Header Ads

Paquetes retenidos

Es posible que durante una actualización de Ubuntu 22.04 salga el mensaje "Los siguientes paquetes se han retenido":
the following packages have been kept back:
   gnome-remote-desktop update-notifier update-notifier-common
Si listamos los paquetes de ejemplo, encontramos lo siguiente:
sudo apt list --upgradable
gnome-remote-desktop/jammy-updates 42.7-0ubuntu1 amd64 [upgradable from: 42.3-0ubuntu1]
update-notifier-common/jammy-updates,jammy-updates 3.192.54.3 all [upgradable from: 3.192.54]
update-notifier/jammy-updates 3.192.54.3 amd64 [upgradable from: 3.192.54]
Y corremos los comandos usuales para intentar solucionarlo, sin éxito:
sudo apt upgrade
sudo apt dist-upgrade
sudo apt-get upgrade
sudo apt-get --with-new-pkgs upgrade
sudo apt-get install --only-upgrade
sudo apt full-upgrade
# etc., etc.
paquetes retenidos
Ni siquiera el poderoso nala puede solventar este problema:
sudo nala install --no-full
nala
¿Por qué sucede esto?
La respuesta es "Actualizaciones por Fases" ( Phased Updates); un sistema que Ubuntu Desktop implementó desde la versión 13.04 para apt-get y a partir de la versión 21.04, apt también comenzó a usarlo, el cual tiene como propósito proteger el sistema de una actualización ocasional con errores, pero, en un entorno automatizado con bash script, puede frenar la ejecución de una tarea programada de actualización por causa de los paquetes retenidos.
Solución
Hay varias. Si solo quiere resolver el problema temporalmente, ejecute en la consola:
sudo apt -o APT::Get::Always-Include-Phased-Updates=true upgrade
Para hacerlo permanente, creamos el archivo:
sudo touch /etc/apt/apt.conf.d/99-Phased-Updates
Con el contenido:
Update-Manager::Always-Include-Phased-Updates;
APT::Get::Always-Include-Phased-Updates True;
También puede hacerlo en una sola línea:
echo $'Update-Manager::Always-Include-Phased-Updates;\nAPT::Get::Always-Include-Phased-Updates True;' | sudo tee -a /etc/apt/apt.conf.d/99-Phased-Updates > /dev/null

# o:

sudo tee -a /etc/apt/apt.conf.d/99-Phased-Updates > /dev/null << EOF
Update-Manager::Always-Include-Phased-Updates;
APT::Get::Always-Include-Phased-Updates True;
EOF
O puede crear dos opciones en el archivo y desactivarlo o activarlo manualmente. Simplemente comente o descomente el bloque de líneas, cambiando de Always por Never y viceversa. Ejemplo:
 # Desactivado
#Update-Manager::Never-Include-Phased-Updates;
#APT::Get::Never-Include-Phased-Updates True;
# Activado:
Update-Manager::Always-Include-Phased-Updates;
APT::Get::Always-Include-Phased-Updates True;
Y finalmente actualizamos con apt upgrade
Pero puede ahorrarse todo esto gracias al milagroso aptitude que siempre termina salvando la campana, con tan solo ejecutar:
sudo aptitude safe-upgrade
Puede consultar el listado de estos paquetes en Phasing Ubuntu Stable Release Updates.

Fuente Consultada: askubuntu.com
Con la tecnología de Blogger.