it-swarm-es.com

"Los siguientes paquetes se han retenido:" ¿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 resolverlo para poder usar la última versión en lugar de la que tengo ahora?

864
jfoucher

Según n artículo en debian-administration.org ,

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

Solución prudente 1:

Por respuesta de Pablo , puede ejecutar Sudo apt-get --with-new-pkgs upgrade, e instalará los paquetes retenidos.

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

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

Solución cautelosa 2:

La solución prudente es ejecutar Sudo apt-get install <list of packages kept back>. En la mayoría de los casos, esto le dará a los paquetes retenidos 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 eliminar 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 te encuentras en un lugar donde la "solución cautelosa" no funciona, dist-upgrade puede funcionar ... pero probablemente sea mejor que aprendas un poco más sobre APT y resolviendo los problemas de dependencia "a mano" instalando y eliminando paquetes caso por caso.

Piense en ello como arreglar un automóvil ... si tiene tiempo y es práctico con una llave inglesa, obtendrá tranquilidad al leer y reparar usted mismo. Si se siente afortunado, puede dejar su auto con su prima dist-upgrade y esperar que ella sepa lo que hace.

845
Michael Crenshaw

Cada vez que recibe del comando apt-get upgrade el mensaje

The following packages have been kept back:

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

apt-get install <list of packages kept back>

esto resolverá los problemas retenidos y solicitará instalar paquetes adicionales, etc., como se explicó en otras respuestas.

497
user88285

apt-get dist-upgrade es peligroso para un entorno estable,

  1. configuración incorrecta de source.list 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 mantuvo, solo desea actualizar el kernel, no desea actualizar toda la distribución.

Mejor forma de manejar el paquete retenido:

Sudo aptitude

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

  • Hit + en esa lista
  • Presiona g dos veces
  • Responda las cosas de debconf si se le pregunta
  • Presione regresar para continuar
  • Presione Q
  • Presione yes

Su paquete guardado instalado.

173
mudy

¿Por qué no intentas esta respuesta de Unix SE :

_Sudo apt-get --with-new-pkgs upgrade
_

Esto permite que se instalen nuevos paquetes. Le informará qué paquetes se instalarán y le preguntará antes de realizar la instalación.

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

Usando _apt install <pkg>_ en su lugar marcará pkg como "instalado manualmente" !! Para marcarlo nuevamente como "instalado automáticamente" use apt-mark auto <pkg> (vea también el subcomando showmanual). Más información en esta respuesta .

141
Pablo Bianchi

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

Si actualizar el programa (a través de Sudo apt-get upgrade) hace que se agreguen o eliminen paquetes, entonces el programa se retrasará. Puede usar Sudo apt-get dist-upgrade en este caso, que luego ofrecerá agregar o quitar los programas adicionales.

Esto es bastante común y generalmente no es un problema. Ocasionalmente (particularmente durante un Ubuntu alfa) un 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, entonces el programa se retrasará. 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 servicio, cuando se cambia el nombre de un paquete o cuando un paquete deja de proporcionar un paquete virtual.

32
jbowtie

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 usen".

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 pueden instalarse para resolver dependencias a menos que se proporcione la opción de línea de comandos --no-new-installs.

23
Afilu

Lo más probable es que estos paquetes se retengan porque su instalación crearía inconsistencias de dependencia. Esto puede suceder porque está usando archivos en desarrollo activo, ppas, o porque el espejo que usa no está completamente actualizado.

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 les retiene o si se fijan.

20
txwikinger

Esto generalmente se debe a que el paquete ha agregado una dependencia, y la actualización no quiere agregarlo sin su permiso.

Si tu corres:

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

Luego, las nuevas versiones deben instalarse junto con su nueva dependencia.

9

Esto funciono para mi

Sudo aptitude full-upgrade
8
Singh

He descubierto que aptitude hace un mejor trabajo al actualizar paquetes si las versiones difieren ligeramente. Tuve una situación como esta:

[email protected]:/etc/apt$ apt-cache policy gzip
gzip:
  Installed: 1.3.5-15
  Candidate: 1.3.5-15+etch1
  Version table:
     1.3.5-15+etch1 0
        500 http://archive.debian.org etch/main Packages
 *** 1.3.5-15 0
        100 /var/lib/dpkg/status

Esto hizo que apt-get retrasara la actualización, pero aptitude la actualizó bien. No estoy seguro de qué algoritmo se utiliza para determinar si un paquete debe actualizarse o no. Supongo que estos dos tenían la misma versión, solo un 'calificador' diferente. Pero en cualquier caso, apt-get no lo actualizaría, pero aptitude lo haría.

6

En mi caso, los paquetes retenidos eran aquellos relacionados con linux-headers y kernel. Llegué a esto tratando de resolver un problema con un signo de exclamación rojo en el área de notificación y no poder actualizar los paquetes.

Para resolverlo, no tuve que usar ni dist-upgrade ni manual apt-get install xxx .

Lo que hice y ayudé ha sido simple y limpio:

Sudo apt-get update
Sudo apt-get autoremove
Sudo apt-get autoclean
Sudo apt-get upgrade

Tuve que confirmar manualmente la actualización de Grub y su configuración.

Luego, simplemente trabajé con la computadora por un tiempo y luego apareció nuevamente el diálogo de actualización estándar que finalmente incluyó la sección "Base de Ubuntu" con el núcleo y relacionados. La actualización se realizó sin problemas y ya no veo ningún paquete retenido.

Además, es muy importante tener en cuenta que esas * actualizaciones de buntu que incluyen las actualizaciones del kernel son sensibles a la hibernación - Tengo este problema varias veces y siempre lo resuelvo reiniciando la máquina y realizando Los pasos anteriores.

Entonces, ¿tal vez esto sería suficiente?

(la situación que se describe aquí está relacionada con mi Xubuntu 15.10 a fines de diciembre de 2015)

4
crysman

Me encontré con este problema cuando se lanzó un nuevo núcleo. (Posiblemente porque tengo habilitadas las actualizaciones inestables). Encontré que la forma más sencilla de hacer la instalación era a través del instalador gráfico de Ubuntu (update-manager).

3
Kazark

Me encontré con este problema usando synaptic porque parecía bloquearse, y para intentar solucionarlo, reinicié e intenté nuevamente.

Luego descubrí un mensaje informativo como parte del paquete con algunas instrucciones posteriores a la instalación para mí.

Tuve que presionar "detalles", y luego 'q' para salir después de leer el mensaje, y luego las cosas continuaron normalmente.

2
Elliptical view

Esta parece ser la forma correcta de reinstalar el paquete retenido:

apt-get install --reinstall libjpeg-progs

Al menos esto funcionó para mí cuando libjpeg-progs estaba atascado después de actualizar Ubuntu 14.04 a 16.04. Estoy seguro de que puede hacer lo mismo con cualquier otra aplicación retenida, p. Ej. gimp.

Fuente: https://ubuntuforums.org/showthread.php?t=2321702&p=13476183#post1347618

2
Stephan Henningsen

He leído todas las publicaciones y descubrí que hay muchas explicaciones interesantes. Estaba probándolos todos pero no tengo ningún resultado por completo. Tengo un problema con mysql-utilities que no pude actualizar. La actualización fue propuesta por el sistema. Entonces, quiero mostrar algunos pasos para hacerlo. Por supuesto, repetiré en algunos momentos todas las publicaciones mencionadas anteriormente. Aquí está mi error, sí, lo encontré en publicaciones ya existentes, pero ¿qué debo hacer a continuación? enter image description here

El siguiente paso es:

Sudo apt-get --purge remove mysql-utilities

Los resultados que podemos ver en la imagen de abajo. Elimino el paquete y verifico esto por comando:

Sudo apt-get -f install

Resultados - ¡Bien! Más tarde instalé esta nueva versión del paquete correctamente. enter image description here

De esta manera, creo que puede ayudar a más personas nuevas porque con otros paquetes podemos seguir los mismos pasos.

Una vez, lo siento, cuando repetí en algunos lugares otras publicaciones.

1
Vasyl Lyashkevych

De hecho, el interruptor que necesita es dselect-upgrade que instala/elimina las dependencias para el conjunto de paquetes en particular involucrado.

1
Johnny