Debian Backports: qué es y cómo activarlo en Debian 11

En este post te cuento qué es debian-backports y cómo activarlo, para poder instalar versiones más modernas de algunos paquetes que trae Debian 11.

Probablemente te habrás dado cuenta que el software que viene en el gestor de paquetes de Debian es un poco más antiguo que el que se puede encontrar en otras distribuciones. Para paquetes que se actualizan con frecuencia, tal vez te sorprenda descubrir que algunos de estos paquetes en Debian traen versiones un poco más antiguas de lo normal. Existe una razón por la que esto es así.

En Debian, prima más la estabilidad de los paquetes que la frecuencia de actualizaciones. Es por ello que en el ciclo de vida de una versión de Debian, una de las primeras etapas es la congelación del repositorio. Esto ocurre meses antes de que salga una versión de Debian. En ese momento, el repositorio de la siguiente versión de Debian deja de aceptar nuevas versiones de los paquetes que porta, y empieza a aceptar solamente correcciones de errores. La idea es poder garantizar que el software que trae el repositorio por lo menos es robusto y tiene sus errores corregidos.

Sin embargo, en algunas ocasiones esto puede ser un problema. Por ejemplo, puede que nuestro ordenador tenga Debian y queramos utilizar una versión reciente de un SDK o de un programa. O puede que por una necesidad de ciberseguridad tengamos que actualizar a una versión de Apache o NGINX más reciente que la que se porta en el repositorio. Si la versión que hay en los repositorios no es lo suficientemente reciente, podemos tirar de debian-backports, suponiendo que el paquete esté disponible en primer lugar.

En definitiva, debian-backports es una forma de traerse desde la rama testing algunos paquetes para que puedan estar disponibles de forma segura en versiones anteriores de Debian. Por ejemplo, traerse paquetes de la rama testing para poderlos usar de forma segura en Debian 11 pero sin cambiar todo el sistema operativo a testing o a sid, algo que puede ser beneficioso en servidores.

Cómo usar debian-backports en Debian 11

Para utilizar debian-backports, lo primero que tendrás que hacer es agregar el repositorio a tu ordenador. Si bien puedes modificar el archivo /etc/apt/sources.list, mi recomendación aquí es crear un archivo nuevo que termine en .list en el subdirectorio /etc/apt/sources.list.d, por ejemplo, /etc/apt/sources.list.d/backports.list. Dentro, añadirás lo siguiente al final del archivo:

deb http://deb.debian.org/debian bullseye-backports main

Este es un paso que puedes dar con un editor de textos como Vim o Nano. Ten en cuenta que en este caso estamos activando el repositorio bullseye-backports porque se trata de Debian 11.

A partir de ahora, podremos instalar paquetes que se porten en el repositorio de backports. No todos los paquetes están en backports, pero sí hay unos cuantos disponibles. Puedes ver la lista completa en packages.debian.org.

Por ejemplo, imaginemos que queremos actualizar el servidor Redis por uno más reciente que el que trae Debian 11 en sus repositorios normales (la versión 6.0.16). Para instalar un paquete desde backports, tendremos que pedirle a apt que use el repositorio bullseye-backports mediante la opción -t:

sudo apt install -t bullseye-backports redis

Si ya teníamos Redis instalado en el sistema, APT lo interpretará como una actualización de software igualmente y se bajará la nueva versión. En este momento, por ejemplo, bullseye-backports porta la versión 7.0.5.

Un detalle importante a tener en cuenta es que pese a que los paquetes de debian-backports han sido testeados para comprobar que funcionan en Debian 11, igualmente se trata de paquetes procedentes de la rama testing, por lo que puede que no tengan tanta estabilidad y confianza como los paquetes congelados que sí trae Debian.

Cómo configurar Flatpak en Debian 11 Bullseye

Flatpak es un formato neutro para la distribución de aplicaciones gráficas en GNU/Linux, y en este artículo te explico cómo puedes instalar el soporte para Flatpak en Debian 11.

Flatpak es un formato de distribución de aplicaciones que se ha vuelto bastante popular en los últimos años porque permite fácilmente distribuir versiones consistentes, estables y seguras de aplicaciones en una gran variedad de distribuciones GNU/Linux.

De este modo, los desarrolladores que fabrican las aplicaciones tienen una forma unificada de distribuir de forma segura aplicaciones para que las últimas versiones del software que desarrollan pueda ser utilizado por los usuarios finales, independientemente de la política de actualizaciones que tenga la distribución que se esté usando.

Otra de las ventajas de Flatpak es el hecho de que las aplicaciones pueden correr bajo una política de seguridad especial, que impida a las aplicaciones tener acceso a más directorios del ordenador de lo que sea estrictamente necesario para hacer funcionar la aplicación, o aislar completamente al proceso para que no pueda ver la lista real de procesos que se están ejecutando en el sistema.

Debido a que en Flatpak se proporciona una forma clara de instalar las dependencias, también ahorra los problemas derivados de que un paquete dependa de una biblioteca que no está disponible en el ordenador. Por ejemplo, es posible usar paquetes que usan la versión más reciente de Qt o de GTK+, incluso si tu Debian te instaló una versión más vieja.

Instalar Flatpak en Debian 11

Flatpak está disponible en los repositorios centrales de Debian, por lo que es muy fácil de activar esta función, si instalas el paquete flatpak. Esto lo puedes hacer desde un gestor de paquetes visual (como Synaptic o GNOME Software), o bien desde la línea de comandos usando el siguiente comando

sudo apt install flatpak

Configurar Flathub

Las aplicaciones en Flatpak se organizan en repositorios. El principal repositorio de Flatpak es Flathub, donde encontrarás un catálogo de software libre y no libre que puedes instalar fácilmente en tu ordenador si estás usando Flatpak.

Ten en cuenta que existen más repositorios de Flatpak por ahí. Por ejemplo, tanto GNOME como KDE tienen su propio repositorio Flatpak adicional, donde publican sus propias aplicaciones, para que las puedas instalar independientemente del ciclo de vida de los paquetes de tu sistema operativo.

En una terminal, utiliza el siguiente comando para agregar el repositorio de Flathub a tu ordenador:

sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Instalar aplicaciones Flatpak desde la línea de comandos

Ahora que hemos metido Flathub como repositorio en nuestra máquina, podemos instalar paquetes de Flathub. En el siguiente ejemplo, me voy a fijar en Plots, una aplicación que sirve para dibujar gráficas, y que está disponible en Flathub.

Si visitamos la página de Flathub, encontramos instrucciones que nos guían en el proceso de instalación de una aplicación.

Instrucciones para la instalación de un programa
Instrucciones para instalar aplicaciones en Flathub

Si copio y pego el primer comando (flatpak install...), el sistema me hará varias preguntas para confirmar si estoy de acuerdo con los cambios que va a hacer en mi ordenador. Principalmente, me listará los paquetes que va a instalar, que no tiene por qué ser únicamente la aplicación, sino también algunos runtimes como GTK+, GNOME Platform, KDE Platform…

Todo lo que tengo que hacer es confirmar los cambios si estamos de acuerdo respondiendole afirmativamente a las preguntas que nos hará. Una vez se hayan descargado e instalado los distintos paquetes (que puede tardar sobre todo si es la primera vez por aquello de que hay que instalar bastantes entornos de ejecución), podremos lanzar la aplicación usando el comando flatpak run que también podemos copiar y pegar, o bien desde el menú de aplicaciones si lo tenemos bien configurado.

Captura de pantalla de Plots
Plots ejecutándose desde Flatpak

Instalar aplicaciones de forma gráfica

Si no te gusta la terminal, es posible también usar herramientas gráficas. Flatpak se integra con KDE Discover, así que si utilizas KDE, es muy posible que ya puedas buscar e instalar aplicaciones desde Discover.

Sin embargo, si estás usando GNOME, deberás instalar también un plugin para que se puedan listar desde GNOME Software. Este paquete se llama gnome-software-plugin-flatpak y lo puedes instalar usando APT o un cliente gráfico como Synaptic.

A partir de este momento, podremos listar e instalar aplicaciones de forma gráfica usando GNOME Software:

GNOME Software mostrando la instalación de un programa
Veloren es un videojuego que se distribuye mediante Flatpak

Cómo instalar Docker en Debian 11 Bullseye

Docker es un software bastante popular presente hoy en día en muchos procesos de desarrollo de software y despliegue. Veamos cómo obtenerlo en workstations o servidores que ejecuten Debian 11.

Docker es un software bastante popular presente hoy en día en muchos procesos de desarrollo de software y despliegue. Su capacidad para ejecutar aplicaciones de forma aislada mediante contenedores lo ha convertido en un software vital en muchos servidores que, en los últimos años, han empezado a desplegar aplicaciones de forma «dockerizada» para ahorrarse el esfuerzo que supone instalar sobre el propio servidor todo el software necesario para ejecutar la aplicación.

También, gracias a la nube pública, hoy en día resulta habitual utilizar servicios donde en vez de administrar un servidor, tu proveedor cloud lo administra por ti y te ofrece directamente una forma de configurar y ejecutar contenedores de Docker desde su interfaz de usuario. A veces incluso como parte de un cluster de Kubernetes.

Instalar Docker en Debian 11 Bullseye

Si has pensado ingenuamente que podrías instalar Docker en Debian 11 usando apt install docker y has visto que no obtenías el resultado esperado, ya puedes ir pensando en desinstalar. Este paquete poco tiene que ver con el Docker que estás pensando.

Docker tiene una forma de «presentarse» bastante peculiar, por lo que antes de continuar tal vez sea conveniente contar las diferencias entre las distintas piezas de software que se hacen llamar «Docker».

  • Por un lado, Docker Engine es la parte principal del sistema de Docker. Contiene un demonio (dockerd) y una serie de aplicaciones de control (como el comando docker), y es lo que permite crear y ejecutar contenedores para lanzar aplicaciones de forma aislada, apoyándose en el sistema cgroups que forma parte del kernel Linux.
  • Por otro lado, Docker Desktop es un producto que cada vez más está siendo más promocionado por Docker Inc, la empresa que está detrás de Docker, que agrega una interfaz de usuario para controlar el Docker Engine y que facilita el proceso de instalación. Hay que entender que Docker Desktop no es de código abierto y que es un producto que al usarlo corporativamente en empresas más grandes podría ser de pago y requerir una licencia si no se cumplen los requisitos para tener acceso gratuito.

Si bien Docker Desktop hasta hace un tiempo era un producto exclusivo para los sistemas operativos Windows y MacOS, donde de todos modos es necesaria una máquina virtual que ejecute el kernel Linux para poder hacer uso del engine de Docker, ahora existe Docker Desktop para Linux, sujeto a los mismos términos de uso que sus hermanos para Windows y MacOS. Es por esta razón que en este post va a ser descartado como opción, y se va a hablar únicamente de Docker Engine.

Instalar Docker Engine desde los repositorios centrales de Debian

Debian 11 porta una versión de Docker Engine en sus repositorios principales, bullseye/main. Esta tal vez no sea la última versión de Docker disponible, pero es una versión relativamente reciente (la 20.11), que puede ser útil si no haces uso de las funciones más modernas de Docker.

Una de las ventajas de usar la versión de Docker Engine que hay en bullseye/main es que tu instalación de Docker tendrá más estabilidad, debido a que la política de actualizaciones de Debian congela las versiones de los paquetes y sólo proporciona correcciones de errores o de problemas de seguridad, así que puedes tener claro que tu instalación de Docker seguirá funcionando exactamente igual sin sorpresas todo el tiempo que Debian 11 continúe recibiendo soporte.

En cuanto a las desventajas: precisamente, que no vas a poder hacer uso de las funciones más recientes, que tal vez sólo estén disponibles en la versión de Docker Engine que distribuye Docker por su cuenta.

Para instalar Docker Engine desde los repositorios de Debian todo lo que tienes que hacer es ejecutar en una terminal con los permisos correspondientes

sudo apt install docker.io

El proceso de instalación incluye también la configuración de los demonios y de un grupo llamado docker. Si quieres poder utilizar Docker sin tener que escribir sudo, vas a tener que meter tu cuenta local habitual dentro del grupo docker, por ejemplo:

sudo /usr/sbin/usermod -aG docker [[tu usuario]]

Tratemos ahora de hacer una prueba para confirmar si se ha instalado bien o mal. Lanzamos un contenedor de la imagen hello-world, que es una imagen que se puede usar para depurar la instalación de Docker.

Resultado de ejecutar hello-world dentro de Docker

Si lejos de ver un mensaje de error, vemos que se ejecuta algo como lo logrado en la imagen, es que lo hemos hecho correctamente y que ya lo tenemos listo para utilizar. ¡Congratulaciones!

Instalar Docker Engine desde los repositorios de Docker

Si en su lugar nos interesase optar por una versión más reciente del engine, podemos agregar el repositorio oficial de Docker a nuestro sistema APT, e instalar Docker a través de ahí. Las instrucciones las tienes en su documentación oficial, pero consistirá en dar los siguientes pasos.

Primero instalaremos las dependencias necesarias para poder dar de alta la clave GPG que firma los paquetes que distribuye Docker en su repositorio oficial para Debian:

sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release

Después, utilizaremos el siguiente comando para descargar e instalar la clave GPG de Docker:

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Para a continuación dar de alta el repositorio en el sistema.

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Finalmente, actualizaremos los paquetes de nuevo, e instalaremos Docker Engine:

sudo apt update 
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Por último, validaremos de forma parecida a lo dicho en la sección anterior, que podemos ejecutar un contenedor de la imagen hello-world sin errores, y opcionalmente introduciremos a nuestro usuario principal en el grupo docker si pretendemos invocar comandos de Docker sin utilizar sudo.