El comando apt se utiliza para la gestión de paquetes en Debian y Ubuntu. Aunque probablemente ya esté familiarizado con las opciones de instalación y eliminación, apt también proporciona algunas funciones adicionales.
Una de ellas es la posibilidad de ver todos los paquetes actualizables de tu sistema. Y para mostrarlos, todo lo que tienes que hacer es utilizar este comando en la terminal:
apt list --upgradable
Como puedes observar, ni siquiera necesita sudo para listar los paquetes actualizables. Solo lista los paquetes que pueden ser actualizados. No los actualiza.
De hecho, el comando apt añade esta sugerencia cuando ejecutas el comando sudo apt update para actualizar la caché del repositorio local de paquetes.
Obtenido 1.243 kB en 17s (71,4 kB/s)
Leyendo listas de paquetes... Hecho
Construyendo árbol de dependencias... Hecho
Lectura de información de estado... Realizado
Se pueden actualizar 30 paquetes. Ejecute 'apt list --upgradable' para verlos.
No recuerdo ninguna opción directa similar en el antiguo comando apt-get para listar todos los paquetes actualizables. Esta es una de las nuevas características que apt ha añadido al antiguo comando apt-get.
Hablemos de ello con un poco más de detalle.
Listado de todos los paquetes actualizables
Lo que debes saber aquí es que sólo podrás listar las actualizaciones disponibles a través del gestor de paquetes de APT. Por tanto, si has añadido PPAs o repositorios externos al sources.list de su sistema, verás las actualizaciones de los mismos.
Pero aquí no obtendrás actualizaciones para AppImage, Flatpak, Snap o algunos otros formatos de empaquetado.
En otras palabras, sólo funciona con paquetes apt.
Así que, para listar todos los paquetes actualizables en tu sistema Ubuntu o Debian, deberías actualizar primero la caché local de paquetes:
sudo apt update
Y entonces tu sistema estará al tanto de las actualizaciones de paquetes disponibles. El comando apt le indica cuántos paquetes pueden actualizarse al final del comando update:
Para ver qué paquetes se pueden actualizar, ejecuta el comando:
apt list --upgradable
Deberías ver una salida como ésta:
marcocarmonapy@Honor:~$ apt list --upgradable
Listing... Done
apparmor/jammy-updates 3.0.4-2ubuntu2.1 amd64 [upgradable from: 3.0.4-2ubuntu2]
brave-browser/stable 1.40.113 amd64 [upgradable from: 1.40.107]
evolution-data-server-common/jammy-updates,jammy-updates 3.44.2-0ubuntu1 all [upgradable from: 3.44.1-0ubuntu2]
evolution-data-server/jammy-updates 3.44.2-0ubuntu1 amd64 [upgradable from: 3.44.1-0ubuntu2]
Enumera todos los paquetes actualizables por orden alfabético con la información sobre la versión instalada actualmente y la nueva versión disponible del paquete.
brave-browser/stable 1.40.113 amd64 [upgradable from: 1.40.107]
Por ejemplo, muestra que tengo la versión 1.40.107 del navegador Brave instalada en el sistema, y que la versión 1.40.113 está disponible.
¿Qué se puede hacer con esta información? Déjame compartir algunas cosas que se me ocurren.
Actualizar todos los paquetes
Esto es probablemente lo que la mayoría de los usuarios ocasionales de Ubuntu hacen. Puedes actualizar todos los paquetes actualizables con el siguiente comando:
sudo apt upgrade
Enumera los paquetes que se actualizarán y, a continuación, pide que se confirme la actualización pulsando Intro o Y.
Si estás seguro de actualizar todos los paquetes, puedes saltarte la parte "¿Desea continuar?" dándole el visto bueno añadiendo -y al comando.
sudo apt upgrade -y
Simular una actualización (pero no actualizar ningún paquete)
Esto es lo que la gente hacía antes del comando apt list. Con la opción simular, en realidad no hace ningún cambio. Sólo muestra qué paquetes se instalarán o actualizarán si ejecuta la actualización.
apt -s upgrade
No necesitas usar sudo (aunque yo lo he usado en la captura de pantalla de abajo).
Actualizar sólo los paquetes seleccionados
Si estás administrando un servidor Ubuntu y no quieres actualizar todos los paquetes sino sólo uno de los seleccionados (como MySQL/Ngnix), puedes hacerlo fácilmente con el comando apt.
sudo apt --only-upgrade install nombre_paquete
En realidad, si ejecutas el comando apt install en un paquete ya instalado para el que hay disponible una actualización, actualizará el paquete.
Con la opción --only-upgrade, se asegura de que un paquete sólo se actualiza (si ya está instalado). No instalará el paquete dado si no está ya instalado.
También puedes actualizar algunos paquetes seleccionados indicando su nombre:
sudo apt --only-upgrade install paquete_1 paquete_2
También puedes hacer lo contrario y retener los paquetes seleccionados de la actualización.
sudo apt-mark hold nombre_paquete
De este modo, el paquete en cuestión no se actualizará cuando actualice todos los paquetes del sistema.
Puedes eliminar la retención con este comando:
sudo apt-mark unhold nombre_paquete
¿Muestra las actualizaciones del kernel?
Esto es un poco complicado.
Cuando ejecutas el comando 'apt list -upgradable' muestra todos los paquetes que se pueden actualizar.
Pero si hay nuevas versiones del kernel disponibles, puede que no se muestren ya que el nombre del paquete del kernel empieza por linux-headers-x-y. Esto se debe a que el sistema los trata como nuevos paquetes, no como una actualización del paquete linux-headers-a-b ya instalado.
Sin embargo, seguirá viendo el tipo de paquete "linux-generic-hwe" en la lista de paquetes actualizables. Porque ese paquete será actualizado (con el nuevo kernel).
Conclusión
La capacidad de listar paquetes actualizables es una de las varias nuevas características que el comando apt trajo sobre el antiguo comando apt-get. Para más información sobre este tema, puedes leer mi artículo explicando la diferencia entre los comandos apt y apt-get.
Como usuario de escritorio, no siempre compruebo los paquetes que se pueden actualizar. Hago la actualización directamente. Sin embargo, cuando estoy administrando un servidor, prefiero ver qué actualizaciones están disponibles y luego decidir si voy a actualizar o no.
¿Y usted? ¿Ves un buen uso para esta función?