Cómo actualizar tu sistema Linux de forma fácil
Para actualizar tu sistema Linux hay muchas formas de hacerlo y si tu sistema operativo está basado en Debian ( como cualquier clon de Ubuntu como Mint, Lubuntu, Xubuntu o Kubuntu) puedes hacerlo usando la línea de comandos. La forma más sencilla es hacerlo por la terminal con el comando de instalación y actualización de paquetes “apt”.
Si quieres saber más sobre Linux o aprender más en profundidad a crear Scripts de Shell como un profesional, puedes acceder a los cursos que ofrecemos en nuestra academia de cursos sobre Linux.
Índice de contenidos
Cómo hacerte superusuario o root en Linux
Lo primero que debes hacer para actualizar tu equipo por línea de comandos, es hacerte administrador del sistema. Como vamos a explicar cómo actualizar tu equipo en Linux aunque estés usando Debian o Ubuntu, vamos a ver las dos formas correctas de hacerlo en cada sistema operativo.
Como ya sabes para hacerte superusuario o root el comando más sencillo es el siguiente si estás usando Debian:
jaime@aprendolinux:~$ su -
Contraseña:
root@aprendolinux:~#
¿Por qué utilizar el carácter “-” después del comando “su”?
Pues sencillamente porque si no lo haces no siempre se cargan completamente las variables de entorno del usuario administrador. Esto provoca que cuando quieras ejecutar un comando de superusuario (comandos restringidos para el usuario “root”). Sin este carácter, no tienes cargado el PATH del administrador y por tanto, para poder ejecutar estos comandos tienes que ir directamente a la ruta donde se encuentra.
Otra opción si estás usando Ubuntu es hacerte superusuario con el comando “sudo” o utilizar sudo al comienzo de cada comando:
jaime@aprendolinux:~$ sudo su
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for jaime:
root@aprendolinux:/home/jaime#
Actualizar los repositorios de “apt” (apt update)
Una vez que somos administradores del sistema, el siguiente paso es actualizar los paquetes que se encuentran en el repositorio de “apt” que tenemos configurado en nuestro fichero “sources.list”. De esta forma, el sistema puede saber si ya tiene instalados los paquetes más actualizados que se alojan allí. En caso contrario te avisa de que hay paquetes por actualizar.
Esto lo hacemos con el comando “apt update” o “apt-get update” y si hay paquetes por actualizar podemos verlos antes de instalarlos con “apt list –upgradable” o “apt upgrade -s”. Esta letra “-s” es una opción que te permite “instalar” de forma falsa un paquete en tu equipo, ya que te informa de lo que descarga y configura pero no llega a instalarlo realmente.
root@aprendolinux:/home/jaime# apt update
Obj:1 http://security.debian.org/debian-security buster/updates InRelease
Des:2 http://ftp.es.debian.org/debian buster InRelease [121 kB]
Des:3 http://ftp.es.debian.org/debian buster-updates InRelease [51,9 kB]
Descargados 173 kB en 0s (475 kB/s)
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se pueden actualizar 20 paquetes. Ejecute «apt list --upgradable» para verlos.
root@aprendolinux:/home/jaime# apt list --upgradable
Listando... Hecho
base-files/stable 10.3+deb10u9 amd64 [actualizable desde: 10.3+deb10u8]
debian-archive-keyring/stable 2019.1+deb10u1 all [actualizable desde: 2019.1]
groff-base/stable 1.22.4-3+deb10u1 amd64 [actualizable desde: 1.22.4-3]
iputils-ping/stable 3:20180629-2+deb10u2 amd64 [actualizable desde: 3:20180629-2+deb10u1]
libbsd0/stable 0.9.1-2+deb10u1 amd64 [actualizable desde: 0.9.1-2]
libcurl3-gnutls/stable 7.64.0-4+deb10u2 amd64 [actualizable desde: 7.64.0-4+deb10u1]
libnss-systemd/stable 241-7~deb10u7 amd64 [actualizable desde: 241-7~deb10u6]
libpam-systemd/stable 241-7~deb10u7 amd64 [actualizable desde: 241-7~deb10u6]
libpython3.7-minimal/stable 3.7.3-2+deb10u3 amd64 [actualizable desde: 3.7.3-2+deb10u2]
libpython3.7-stdlib/stable 3.7.3-2+deb10u3 amd64 [actualizable desde: 3.7.3-2+deb10u2]
libssl1.1/stable 1.1.1d-0+deb10u6 amd64 [actualizable desde: 1.1.1d-0+deb10u5]
libsystemd0/stable 241-7~deb10u7 amd64 [actualizable desde: 241-7~deb10u6]
libudev1/stable 241-7~deb10u7 amd64 [actualizable desde: 241-7~deb10u6]
linux-image-amd64/stable 4.19+105+deb10u11 amd64 [actualizable desde: 4.19+105+deb10u9]
openssl/stable 1.1.1d-0+deb10u6 amd64 [actualizable desde: 1.1.1d-0+deb10u5]
python3.7-minimal/stable 3.7.3-2+deb10u3 amd64 [actualizable desde: 3.7.3-2+deb10u2]
python3.7/stable 3.7.3-2+deb10u3 amd64 [actualizable desde: 3.7.3-2+deb10u2]
systemd-sysv/stable 241-7~deb10u7 amd64 [actualizable desde: 241-7~deb10u6]
systemd/stable 241-7~deb10u7 amd64 [actualizable desde: 241-7~deb10u6]
udev/stable 241-7~deb10u7 amd64 [actualizable desde: 241-7~deb10u6]
Actualiza tu equipo Linux con apt upgrade, apt-get upgrade o apt-get dist-upgrade
Una vez ya tenemos descargada la lista de los paquetes actualizados que se encuentran en el repositorio podemos empezar a realizar la instalación y actualización de paquetes que tenemos en nuestro equipo.
Cuál es la diferencia entre apt-get upgrade y dist-upgrade
Si nos fijamos en el manual de Linux encontramos estas líneas:
upgrade (apt-get(8))
upgrade is used to install available upgrades of all packages currently installed on the system from the sources configured via sources.list(5). New packages will be installed if required to satisfy dependencies, but existing packages will never be removed. If an upgrade for a package requires the removal of an installed package the upgrade for this package isn't performed.
Lo que nos quiere decir que cuando un paquete tiene dependencias, es decir que requiere de otro paquete para funcionar, utilizando “apt-get upgrade” este nuevo paquete será instalado automáticamente. Pero si una actualización deja de depender de otro paquete o requiere que otro paquete sea eliminado, este comando no ejecutará nunca la actualización ya que no es capaz de eliminar paquetes que no sean necesarios.
Por otro lado cuando vemos el manual de dist-upgrade:
dist-upgrade
dist-upgrade in addition to performing the function of upgrade, also intelligently handles changing dependencies with new versions of packages; apt-get has a "smart" conflict resolution system, and it will attempt to upgrade the most important packages at the expense of less important ones if necessary. The dist-upgrade command may therefore remove some packages.
Por tanto hay una diferencia esencial, y es que dist-upgrade maneja de forma inteligente las dependencias de los paquetes para resolver los conflictos que puedan surgir entre ellos. Para ello prioriza la actualización de los paquetes más importantes por delante de los que considera menos importantes, y en caso de ser necesario eliminaría los paquetes que ya no van a ser utilizados.
Usar apt upgrade o apt-get upgrade
Para esta actualización debemos utilizar el comando “apt upgrade” o “apt-get upgrade”… pero ¿es lo mismo apt-get dist-upgrade?
Pues no, no es lo mismo ya que dist-upgrade realiza unas tareas extra a parte de la actualización de los paquetes. La tarea principal es que realiza un chequeo inteligente de los paquetes instalados que tienen dependencias. En caso de que para actualizar un paquete importante se necesite realizar alguna desinstalación o borrado de otros paquetes, con este comando lo hará.
Con una instalación sencilla como la que tenemos hecha en la máquina virtual que os explico en el curso básico de Linux, se puede realizar una actualización genérica. Esto se hace con el comando “apt upgrade” y este es el resultado de una buena actualización de kernel y todo.
root@aprendolinux:/home/jaime# apt upgrade
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Calculando la actualización... Hecho
Se instalarán los siguientes paquetes NUEVOS:
linux-image-4.19.0-16-amd64
Se actualizarán los siguientes paquetes:
base-files debian-archive-keyring groff-base iputils-ping libbsd0 libcurl3-gnutls libnss-systemd libpam-systemd
libpython3.7-minimal libpython3.7-stdlib libssl1.1 libsystemd0 libudev1 linux-image-amd64 openssl python3.7 python3.7-minimal
systemd systemd-sysv udev
20 actualizados, 1 nuevos se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 62,5 MB de archivos.
Se utilizarán 270 MB de espacio de disco adicional después de esta operación.
¿Desea continuar? [S/n] s
Des:1 http://security.debian.org/debian-security buster/updates/main amd64 libssl1.1 amd64 1.1.1d-0+deb10u6 [1.539 kB]
Des:2 http://ftp.es.debian.org/debian buster/main amd64 base-files amd64 10.3+deb10u9 [69,9 kB]
Des:3 http://ftp.es.debian.org/debian buster/main amd64 libnss-systemd amd64 241-7~deb10u7 [205 kB]
Des:4 http://ftp.es.debian.org/debian buster/main amd64 libsystemd0 amd64 241-7~deb10u7 [332 kB]
Des:5 http://ftp.es.debian.org/debian buster/main amd64 libpam-systemd amd64 241-7~deb10u7 [209 kB]
Des:6 http://ftp.es.debian.org/debian buster/main amd64 systemd amd64 241-7~deb10u7 [3.499 kB]
Des:7 http://security.debian.org/debian-security buster/updates/main amd64 libcurl3-gnutls amd64 7.64.0-4+deb10u2 [330 kB]
Des:8 http://security.debian.org/debian-security buster/updates/main amd64 openssl amd64 1.1.1d-0+deb10u6 [844 kB]
Des:9 http://ftp.es.debian.org/debian buster/main amd64 udev amd64 241-7~deb10u7 [1.278 kB]
Des:10 http://ftp.es.debian.org/debian buster/main amd64 libudev1 amd64 241-7~deb10u7 [151 kB]
Des:11 http://ftp.es.debian.org/debian buster/main amd64 systemd-sysv amd64 241-7~deb10u7 [100 kB]
Des:12 http://ftp.es.debian.org/debian buster/main amd64 python3.7 amd64 3.7.3-2+deb10u3 [330 kB]
Des:13 http://ftp.es.debian.org/debian buster/main amd64 libpython3.7-stdlib amd64 3.7.3-2+deb10u3 [1.734 kB]
Des:14 http://ftp.es.debian.org/debian buster/main amd64 python3.7-minimal amd64 3.7.3-2+deb10u3 [1.737 kB]
Des:15 http://ftp.es.debian.org/debian buster/main amd64 libpython3.7-minimal amd64 3.7.3-2+deb10u3 [589 kB]
Des:16 http://ftp.es.debian.org/debian buster/main amd64 debian-archive-keyring all 2019.1+deb10u1 [93,5 kB]
Des:17 http://ftp.es.debian.org/debian buster/main amd64 iputils-ping amd64 3:20180629-2+deb10u2 [43,4 kB]
Des:18 http://ftp.es.debian.org/debian buster/main amd64 groff-base amd64 1.22.4-3+deb10u1 [916 kB]
Des:19 http://ftp.es.debian.org/debian buster/main amd64 libbsd0 amd64 0.9.1-2+deb10u1 [99,5 kB]
Des:20 http://ftp.es.debian.org/debian buster/main amd64 linux-image-4.19.0-16-amd64 amd64 4.19.181-1 [48,4 MB]
Des:21 http://ftp.es.debian.org/debian buster/main amd64 linux-image-amd64 amd64 4.19+105+deb10u11 [8.288 B]
Descargados 62,5 MB en 6s (11,0 MB/s)
Leyendo lista de cambios... Hecho.
Preconfigurando paquetes ...
(Leyendo la base de datos ... 30967 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar .../base-files_10.3+deb10u9_amd64.deb ...
Desempaquetando base-files (10.3+deb10u9) sobre (10.3+deb10u8) ...
Configurando base-files (10.3+deb10u9) ...
Instalando una nueva versión del fichero de configuración /etc/debian_version ...
(Leyendo la base de datos ... 30967 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar .../libnss-systemd_241-7~deb10u7_amd64.deb ...
Desempaquetando libnss-systemd:amd64 (241-7~deb10u7) sobre (241-7~deb10u6) ...
Preparando para desempaquetar .../libsystemd0_241-7~deb10u7_amd64.deb ...
Desempaquetando libsystemd0:amd64 (241-7~deb10u7) sobre (241-7~deb10u6) ...
Configurando libsystemd0:amd64 (241-7~deb10u7) ...
(Leyendo la base de datos ... 30967 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar .../libpam-systemd_241-7~deb10u7_amd64.deb ...
Desempaquetando libpam-systemd:amd64 (241-7~deb10u7) sobre (241-7~deb10u6) ...
Preparando para desempaquetar .../systemd_241-7~deb10u7_amd64.deb ...
Desempaquetando systemd (241-7~deb10u7) sobre (241-7~deb10u6) ...
Preparando para desempaquetar .../udev_241-7~deb10u7_amd64.deb ...
Desempaquetando udev (241-7~deb10u7) sobre (241-7~deb10u6) ...
Preparando para desempaquetar .../libudev1_241-7~deb10u7_amd64.deb ...
Desempaquetando libudev1:amd64 (241-7~deb10u7) sobre (241-7~deb10u6) ...
Configurando libudev1:amd64 (241-7~deb10u7) ...
Configurando systemd (241-7~deb10u7) ...
(Leyendo la base de datos ... 30967 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar .../0-systemd-sysv_241-7~deb10u7_amd64.deb ...
Desempaquetando systemd-sysv (241-7~deb10u7) sobre (241-7~deb10u6) ...
Preparando para desempaquetar .../1-libssl1.1_1.1.1d-0+deb10u6_amd64.deb ...
Desempaquetando libssl1.1:amd64 (1.1.1d-0+deb10u6) sobre (1.1.1d-0+deb10u5) ...
Preparando para desempaquetar .../2-python3.7_3.7.3-2+deb10u3_amd64.deb ...
Desempaquetando python3.7 (3.7.3-2+deb10u3) sobre (3.7.3-2+deb10u2) ...
Preparando para desempaquetar .../3-libpython3.7-stdlib_3.7.3-2+deb10u3_amd64.deb ...
Desempaquetando libpython3.7-stdlib:amd64 (3.7.3-2+deb10u3) sobre (3.7.3-2+deb10u2) ...
Preparando para desempaquetar .../4-python3.7-minimal_3.7.3-2+deb10u3_amd64.deb ...
Desempaquetando python3.7-minimal (3.7.3-2+deb10u3) sobre (3.7.3-2+deb10u2) ...
Preparando para desempaquetar .../5-libpython3.7-minimal_3.7.3-2+deb10u3_amd64.deb ...
Desempaquetando libpython3.7-minimal:amd64 (3.7.3-2+deb10u3) sobre (3.7.3-2+deb10u2) ...
Preparando para desempaquetar .../6-debian-archive-keyring_2019.1+deb10u1_all.deb ...
Desempaquetando debian-archive-keyring (2019.1+deb10u1) sobre (2019.1) ...
Configurando debian-archive-keyring (2019.1+deb10u1) ...
Removing obsolete conffile /etc/apt/trusted.gpg.d/debian-archive-jessie-automatic.gpg ...
Removing obsolete conffile /etc/apt/trusted.gpg.d/debian-archive-jessie-security-automatic.gpg ...
Removing obsolete conffile /etc/apt/trusted.gpg.d/debian-archive-jessie-stable.gpg ...
(Leyendo la base de datos ... 30967 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar .../0-iputils-ping_3%3a20180629-2+deb10u2_amd64.deb ...
Desempaquetando iputils-ping (3:20180629-2+deb10u2) sobre (3:20180629-2+deb10u1) ...
Preparando para desempaquetar .../1-groff-base_1.22.4-3+deb10u1_amd64.deb ...
Desempaquetando groff-base (1.22.4-3+deb10u1) sobre (1.22.4-3) ...
Preparando para desempaquetar .../2-libbsd0_0.9.1-2+deb10u1_amd64.deb ...
Desempaquetando libbsd0:amd64 (0.9.1-2+deb10u1) sobre (0.9.1-2) ...
Preparando para desempaquetar .../3-libcurl3-gnutls_7.64.0-4+deb10u2_amd64.deb ...
Desempaquetando libcurl3-gnutls:amd64 (7.64.0-4+deb10u2) sobre (7.64.0-4+deb10u1) ...
Seleccionando el paquete linux-image-4.19.0-16-amd64 previamente no seleccionado.
Preparando para desempaquetar .../4-linux-image-4.19.0-16-amd64_4.19.181-1_amd64.deb ...
Desempaquetando linux-image-4.19.0-16-amd64 (4.19.181-1) ...
Preparando para desempaquetar .../5-linux-image-amd64_4.19+105+deb10u11_amd64.deb ...
Desempaquetando linux-image-amd64 (4.19+105+deb10u11) sobre (4.19+105+deb10u9) ...
Preparando para desempaquetar .../6-openssl_1.1.1d-0+deb10u6_amd64.deb ...
Desempaquetando openssl (1.1.1d-0+deb10u6) sobre (1.1.1d-0+deb10u5) ...
Configurando linux-image-4.19.0-16-amd64 (4.19.181-1) ...
I: /vmlinuz is now a symlink to boot/vmlinuz-4.19.0-16-amd64
I: /initrd.img is now a symlink to boot/initrd.img-4.19.0-16-amd64
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-4.19.0-16-amd64
/etc/kernel/postinst.d/zz-update-grub:
Generando un fichero de configuración de grub...
Encontrada imagen de linux: /boot/vmlinuz-4.19.0-16-amd64
Encontrada imagen de memoria inicial: /boot/initrd.img-4.19.0-16-amd64
Encontrada imagen de linux: /boot/vmlinuz-4.19.0-14-amd64
Encontrada imagen de memoria inicial: /boot/initrd.img-4.19.0-14-amd64
hecho
Configurando systemd-sysv (241-7~deb10u7) ...
Configurando libssl1.1:amd64 (1.1.1d-0+deb10u6) ...
Configurando libnss-systemd:amd64 (241-7~deb10u7) ...
Configurando libcurl3-gnutls:amd64 (7.64.0-4+deb10u2) ...
Configurando linux-image-amd64 (4.19+105+deb10u11) ...
Configurando libpython3.7-minimal:amd64 (3.7.3-2+deb10u3) ...
Configurando udev (241-7~deb10u7) ...
update-initramfs: deferring update (trigger activated)
Configurando python3.7-minimal (3.7.3-2+deb10u3) ...
Configurando groff-base (1.22.4-3+deb10u1) ...
Configurando libpam-systemd:amd64 (241-7~deb10u7) ...
Configurando openssl (1.1.1d-0+deb10u6) ...
Configurando libbsd0:amd64 (0.9.1-2+deb10u1) ...
Configurando iputils-ping (3:20180629-2+deb10u2) ...
Configurando libpython3.7-stdlib:amd64 (3.7.3-2+deb10u3) ...
Configurando python3.7 (3.7.3-2+deb10u3) ...
Procesando disparadores para libc-bin (2.28-10) ...
Procesando disparadores para man-db (2.8.5-2) ...
Procesando disparadores para dbus (1.12.20-0+deb10u1) ...
Procesando disparadores para mime-support (3.62) ...
Procesando disparadores para initramfs-tools (0.133+deb10u1) ...
update-initramfs: Generating /boot/initrd.img-4.19.0-16-amd64
Actualizar el kernel del Linux en Debian o Ubuntu
Cuando se ha realizado una actualización de kernel, es recomendable reiniciar el equipo para que se apliquen todos los cambios y el sistema empiece a utilizar este nuevo kernel.
Pero la gran ventaja de Linux es que los kernel no se actualizan a menudo y en general no es necesario reiniciar un equipo de Linux a no ser que haya un bug importante. Por esta razón Linux es el sistema operativo más usado en los servidores de todo el mundo, ya que tiene una estabilidad brutal y los cambios y actualizaciones no afectan prácticamente al correcto funcionamiento del mismo.