En este artículo, veremos algunas soluciones al mensaje «Los siguientes paquetes se han retenido» (en inglés: «the following packages have been kept back») que muestra la herramienta apt upgrade
cuando intentamos actualizar nuestro equipo.
- Introducción (Volver al índice General)
Periódicamente actualizamos los paquetes de nuestras distribuciones a sus versiones más nuevas, para corregir errores o conseguir mejoras del software.
Normalmente, en las distribuciones basadas en paquetes .deb, cuando actualizamos el sistema con los comandosapt update
yapt upgrade
, se actualizan todos los paquetes instalados a sus versiones más nuevas disponibles. Sin embargo, si las dependencias de un paquete instalado han cambiado con la nueva versión, de modo que requiera la instalación de nuevos paquetes, el paquete instalado no se actualizará cuando actualicemos el sistema y aparecerá el mensaje «Los siguientes paquetes se han retenido» (en inglés «the following packages have been kept back») seguido de una lista con los nombres de los paquetes retenidos.A continuación repasaremos el proceso de actualización del sistema y las posibles soluciones para instalar los paquetes retenidos.
- Actualizando la distribución (Volver al índice General)
Vamos a ver el proceso de actualización de una distribución basada en paquetes .deb, hasta que aparece el mensaje: «Los siguientes paquetes se han retenido» (en inglés «the following packages have been kept back»).- En primer lugar, actualizamos la lista de paquetes disponibles en los repositorios con el siguiente comando:
$ sudo apt-get update
Este comando nos indicará el número de paquetes que se pueden actualizar en caso de haber paquetes actualizables, y si los hubiese, nos avisa de la existencia del comando
apt list --upgradable
que nos permite listar los paquetes actualizables antes de instalarlos.$ sudo apt list --upgradable
- En segundo lugar, actualizamos los paquetes disponibles con el siguiente comando:
$ sudo apt-get upgrade
Llegados a este punto, todos los paquetes de nuestro sistema estarían actualizados.
- Si nos encontramos en el caso que trata este artículo, al actualizar las listas de paquetes disponibles en los repositorios, obtendríamos algo similar a lo siguiente:
1 2 3 4 5 6
$ sudo apt-get update Obj:1 http://kali.download/kali kali-rolling InRelease Leyendo lista de paquetes... Hecho Creando árbol de dependencias... Hecho Leyendo la información de estado... Hecho Se pueden actualizar 5 paquetes. Ejecute «apt list --upgradable» para verlos.
- La línea 6 del ejemplo anterior, nos indica que hay 5 paquetes que se pueden actualizar y nos avisa de la existencia del comando
apt list --upgradable
, que nos permite listar los paquetes actualizables.
Veamos con el comandoapt list --upgradable
la lista de los paquetes que se pueden actualizar del ejemplo anterior:$ sudo apt list --upgradable Listando... Hecho gstreamer1.0-libav/kali-rolling 1.18.5-1 amd64 [actualizable desde: 1.16.2-2] libavcodec58/kali-rolling 7:4.4.1-1+b1 amd64 [actualizable desde: 7:4.3-2] libavfilter7/kali-rolling 7:4.4.1-1+b1 amd64 [actualizable desde: 7:4.3-2] libavformat58/kali-rolling 7:4.4.1-1+b1 amd64 [actualizable desde: 7:4.3-2] libavutil56/kali-rolling 7:4.4.1-1+b1 amd64 [actualizable desde: 7:4.3-2]
- La línea 6 del ejemplo anterior, nos indica que hay 5 paquetes que se pueden actualizar y nos avisa de la existencia del comando
- Si intentamos actualizar los paquetes, en este caso los 5 del ejemplo anterior, estos no se actualizarán, al final de la ejecución del comando aparecerá algo similar a lo siguiente:
1 2 3 4 5 6 7 8
$ sudo apt-get upgrade Leyendo lista de paquetes... Hecho Creando árbol de dependencias... Hecho Leyendo la información de estado... Hecho Calculando la actualización... Hecho Los siguientes paquetes se han retenido: gstreamer1.0-libav libavcodec58 libavfilter7 libavformat58 libavutil56 0 actualizados, 0 nuevos se instalarán, 0 para eliminar y 5 no actualizados.
- La línea 6 nos avisa de que hay paquetes retenidos.
- La línea 7 muestra los nombres de los paquetes retenidos.
- La línea 8 nos indica el número de paquetes no actualizados que en este caso coincide con los paquetes retenidos.
Llegados a este punto, si queremos tener actualizada nuestra distribución, podemos optar por alguna de las soluciones siguientes.
- En primer lugar, actualizamos la lista de paquetes disponibles en los repositorios con el siguiente comando:
- Soluciones (Volver al índice General)
A continuación, vamos a exponer cuatro soluciones. Empezaremos por la más cauta y terminaremos por la más radical. La elección de la solución de penderá del caso particular de cada sistema o intención del usuario. Algunas soluciones funcionan bien en algunos sistemas y otras no.- Solución 1: Utilizar el comando «apt-get install» (Volver al índice General)
La solución más cauta es la instalación manual de los paquetes retenidos. Para hacerlo, ejecutaremos el siguiente comando:$ sudo apt-get install <lista de paquetes retenidos>
Donde <lista de paquetes retenidos> son los nombres de todos los paquetes retenidos separados por espacios. En la mayoría de los casos, este comando instalará todas las dependencias de los paquetes retenidos.
Por ejemplo:
$ sudo apt-get install gstreamer1.0-libav libavcodec58 libavfilter7 libavformat58 libavutil56
- Solución 2: Utilizar el comando «aptitude safe-upgrade» (Volver al índice General)
Esta solución podría calificarse como igual de cauta que la Solución 1. La diferencia con la Solución 1 es que este comando no eliminará ningún paquete a menos que no esté en uso. También instalará todas las dependencias de los paquetes retenidos.Si el paquete
aptitude
no está instalado en nuestro sistema, ejecutamos el siguiente comando:$ sudo apt-get install aptitude
Para actualizar los paquetes retenidos con
aptitude
, ejecutamos el siguiente comando:$ sudo aptitude safe-upgrade
- Solución 3: Utilizar el comando «apt-get –with-new-pkgs upgrade» (Volver al índice General)
Instala automáticamente cualquier paquete adicional necesario para actualizar los paquetes retenidos pero, sin marcar los paquetes retenidos como instalados manualmente. Esto podría forzar una mayor intervención del usuario en la línea de comandos. Para hacerlo, ejecutamos el siguiente comando:$ sudo apt-get --with-new-pkgs upgrade
- Solución 4: Utilizar el comando «apt-get dist-upgrade» (Volver al índice General)
Esta solución actualiza la distribución subiéndola de versión. En la mayoría de los casos es la solución más radical, ya que puede eliminar automáticamente los paquetes que considere innecesarios mientras maneja las dependencias. Esto puede dar lugar a situaciones no deseadas. Por otro lado, en distribuciones del tipo Rolling Release, como es Kali Linux, no es una opción radical, por el contrario es de lo más normal.Para subir de versión nuestra distribución, ejecutamos el siguiente comando:
$ sudo apt-get dist-upgrade
Es aconsejable, que terminado el proceso de actualización limpiemos nuestro sistema de paquetes innecesarios. Para hacerlo, ejecutamos el siguiente comando:
$ sudo apt-get autoremove
Hecho todo esto, sería conveniente hacer un reinicio del sistema.
Esta solución se ha probado en una distribución Kali Linux 2020.2 que terminó actualizada a la versión 2021.3 sin errores de ningún tipo.
- Solución 1: Utilizar el comando «apt-get install» (Volver al índice General)
Espero que este artículo os haya sido de utilidad. Si pensáis que podéis colaborar para mejorar este artículo, que hay algo erróneo en él o simplemente deseáis comentarlo, por favor, dejad vuestra opinión más abajo.
Configuración de privacidad y de cookies.
Yo
Muchas gracias!!!
J. Carlos
Gracias a ti por visitar ZeppelinuX
Alan
Gracias wachem.
J. Carlos
Gracias a ti por visitar ZeppelinuX
Jesus Juarez
Gracias, me ayudo!!
J. Carlos
Gracias a ti por visitar ZeppelinuX
Alonso Alejandro Colín Cruz
Gracias por compartir la solución me ayudo mucho.
J. Carlos
Hola Alonso,
Gracias a ti por visitar ZeppelinuX
OLGA
no me ayudo, ningun comando me sirvio, estoy en Ubuntu 16.02 LTS
J. Carlos
Hola Olga,
Siento que no te haya servido. Yo lo he probado en Debian y en Kali Lunux y lo he conseguido. Siempre empiezo por la solución menos radical, como indico en el artículo.
¿Qué solución o soluciones has utilizado? ¿Podrías darme más información, como la salida de los comandos?
Un saludo
Edward
Gracias! me funciono el primer metodo en Linux Mint 21.1
Juan
Gracias me ha servido, he resuelto el problema.
Salvador Fernandez
Buenos días. Fantástico. Muy bien explicado. Muchísimas gracias.
J. Carlos
Hola Salvador,
Gracias por tu comentario y por visitar ZeppelinuX.
danilo
gracias
J. Carlos
Gracias a ti por visitar ZeppelinuX
Jaime
Genial, muchas gracias!
J. Carlos
Hola Jaime,
En primer lugar perdón por la tardanza, pero ya he vuelto.
Un saludo y gracias a ti por visitar ZeppelinuX.
Juan Angel
Gracias por esta ayuda, me ha servido mucho. Una cosita, al escribir «sudo apt-get list –upgradable» de daba error, porque es «sudo apt list –upgradable». No sé si es cosa de mi sistema o es una errata o algo no lo estoy haciendo bien. Estoy probando lo de «aptitude safe-upgrade», porque tengo 1199 de paquetes no actualizados… y a mano, como que no… seguramente haya forma de pasar la lista a apt-get install, pero estoy siguiendo esa otra forma que parece bastante buena, espero que funcione!!
J. Carlos
Hola Juan Angel,
En primer lugar perdón por la tardanza, pero ya he vuelto.
«sudo apt-get list –upgradable», corregido en el artículo. Gracias por tu aporte.
Espero que alguna de las formas utilizadas en el artículo te sirva.
Un saludo y gracias por visitar ZeppelinuX.