"Se han retenido los siguientes paquetes:" ¿Por qué y cómo lo resuelvo?

Acabo de agregar un repositorio PPA para la versión de desarrollo de GIMP, pero aparece este error:

$ apt-get update && apt-get upgrade...The following packages have been kept back:  gimp gimp-data libgegl-0.0-0 libgimp2.0

¿Por qué y cómo puedo solucionarlo para poder usar la última versión en lugar de la que tengo ahora?

De acuerdo con un artículo sobre debian-administration.org,

Si las dependencias han cambiado en uno de los paquetes que ha instalado, de modo que se debe instalar un nuevo paquete para realizar la actualización, se mostrará como "guardado".

Solución cautelosa 1:

Por La respuesta de Pablo, puedes correr sudo apt-get --with-new-pkgs upgrade, e instalará los paquetes guardados.

Esto tiene la ventaja de no marcar los paquetes guardados como "instalados manualmente", lo que podría forzar una mayor intervención del usuario en el futuro (ver comentarios).

Si la solución de Pablo funciona para usted, por favor vote a favor. Si no, por favor comente lo que salió mal.

Solución cautelosa 2:

La solución prudente es correr sudo apt-get install <list of packages kept back>. En la mayoría de los casos, esto le dará a los paquetes devueltos lo que necesitan para actualizar con éxito.

Solución agresiva:

Una solución más agresiva es ejecutar sudo apt-get dist-upgrade, lo que forzará la instalación de esas nuevas dependencias.

Pero dist-upgrade puede ser bastante peligroso. A diferencia de la actualización puede quitar paquetes para resolver situaciones de dependencia complejas. A diferencia de usted, APT no siempre es lo suficientemente inteligente como para saber si estas adiciones y eliminaciones podrían causar estragos.

Entonces, si se encuentra en un lugar donde la "solución cautelosa" no funciona, dist-upgrade puede trabajo... pero probablemente sea mejor que aprenda un poco más sobre APT y resuelva los problemas de dependencia "a mano" instalando y eliminando paquetes caso por caso.

Piensa en ello como arreglar un auto... si tiene tiempo y es hábil con una llave inglesa, obtendrá algo de tranquilidad al leer y hacer la reparación usted mismo. Si te sientes afortunado, puedes dejar tu auto con tu primo dist-upgrade y espero que sepa sus cosas.

Siempre que recibas del comando apt-get upgrade mensaje

The following packages have been kept back:

luego, para actualizar uno o todos los paquetes guardados, sin hacer una actualización de distribución (esto es lo que dist-upgrade lo hace, si no recuerdo mal) es emitir el comando:

apt-get install <list of packages kept back>

esto resolverá los problemas de retención y le pedirá que instale paquetes adicionales, etc. como se explicó en otras respuestas.

Véase también: ¿Por qué usar apt-get upgrade en lugar de apt-get dist-upgrade?

Tratar esta es la respuesta:

sudo apt-get --with-new-pkgs upgrade

Esto permite instalar nuevos paquetes. Le permitirá saber qué paquetes se instalarán y le indicará antes de realizar la instalación.

apt comando (alternativa amigable a apt-get) comparte esta opción.

Utilizar apt install <pkg> en su lugar, marcará pkg como"instalado manualmente".! Para volver a marcarlo como "instalado automáticamente", use apt-mark auto <pkg> (véase también subcomando showmanual). Más info en esta respuesta.

apt-get dist-upgrade es peligroso para el ambiente estable,

  1. fuente equivocada.configuración de la lista y terminas con Ubuntu roto.
  2. es posible que actualice toda la aplicación a la versión que no desea.

Caso de uso: la actualización del kernel se mantiene, solo desea actualizar el kernel, no desea actualizar toda la distribución.

Una mejor manera de manejar el paquete guardado:

sudo aptitude

Si ha guardado el paquete, debería ver los Paquetes actualizables en la parte superior de la lista.

  • Pulsa + en esa lista
  • Golpea g dos veces
  • Responda a las preguntas de debconf si se le pregunta
  • Presione Retorno para continuar
  • Presione Q
  • Pulsa Sí

Su paquete guardado instalado.

Normalmente hay dos razones por las que puede ver este mensaje.

Si actualiza el programa (a través de sudo apt-get upgrade) causaría que se agreguen o eliminen paquetes, entonces el programa se retendrá. Puedes usar sudo apt-get dist-upgrade en este caso, que luego ofrecerá agregar o eliminar los programas adicionales.

Esto es bastante común y, por lo general, no es un problema. Ocasionalmente (particularmente durante una alfa de Ubuntu) a dist-upgrade ofrecerá eliminar muchos otros programas, en cuyo caso probablemente desee cancelarlo.

Si el programa depende de paquetes o versiones que no están disponibles, el programa se retendrá. Realmente no puede hacer nada más que esperar en esta circunstancia, ya que el paquete es básicamente desinstalable. Esto puede suceder cuando los paquetes se agregan al repositorio fuera de orden, cuando se cambia el nombre de un paquete o cuando un paquete deja de proporcionar un paquete virtual.

También puedes probar:

sudo aptitude safe-upgrade

Es más seguro que full-upgrade (originalmente llamado dist-upgrade) porque "los paquetes no se eliminarán a menos que no se utilicen".

De man aptitude:

actualización segura

Actualiza los paquetes instalados a su versión más reciente. Los paquetes instalados no se eliminarán a menos que no se utilicen /.../ Los paquetes que no están instalados actualmente se pueden instalar para resolver dependencias a menos que se proporcione la opción de línea de comandos --no-new-install.

Lo más probable es que estos paquetes se retengan porque su instalación crearía inconsistencias de dependencia. Esto puede suceder porque está utilizando archivos en desarrollo activo, PPA, o porque la réplica que utiliza no está completamente actualizada.

En el último caso, solo espere, cuando se resuelvan las dependencias, se instalará la próxima vez.

Editar:

Existe otra posibilidad, los paquetes pueden retenerse si se los retiene o si están inmovilizados.

Esto funcionó para mí

sudo aptitude full-upgrade

Por lo general, esto se debe a que el paquete ha agregado una dependencia y upgrade no quiere agregarla por usted sin permiso.

Si corres:

sudo apt-get install gimp gimp-data libgegl-0.0-0 libgimp2.0

A continuación, las nuevas versiones deben instalarse junto con su nueva dependencia.

Ubuntu 18.04, 20.04 (y posteriores) proporcionan un sintaxis simplificada mediante apt full-upgrade que funciona como sudo apt-get dist-upgrade.

sudo apt full-upgrade

sudo apt upgrade se utiliza para instalar actualizaciones disponibles de todos los paquetes instalados actualmente en el sistema desde las fuentes configuradas a través de fuentes.lista(5). Se instalarán nuevos paquetes si es necesario para satisfacer las dependencias, pero los paquetes existentes nunca se eliminarán. Si una actualización de un paquete requiere la eliminación de un paquete instalado la actualización de este paquete no se realiza.

sudo apt full-upgrade realiza la función de actualización, pero elimine los paquetes instalados actualmente si es necesario para actualizar el sistema en su conjunto.

Nota: full-upgrade permanece en la distribución actual.

Ver: apt página de manual: 18.04, 20.04

Qué mensaje de basura. ¿Por qué el sistema operativo no puede hacer lo necesario?