Grupo Linuxero del Bajío

aplanando paquetes, o flatpakin'

Víctor Manuel Jáquez Leal

El propósito de este texto es intentar explicar la tecnología flatpak [1].

Aquellos días donde cada distribución se enorgullecía de la cantidad de paquetes que mantenía, de su maravilloso sistema de paquetería (deb, rpm, recetas de compilación), se encuentran ya en su ocaso. No digo que desaparecerán, siguen siendo necesarias, pero para un número menor de paquetes. Ya no buscaremos, en la página de la distribución, si ya tienen empaquetada la última versión de la aplicación que necesitamos.

Ahora, las aplicaciones se empaquetarán y distribuirán a través del sistema flatpak.

Habrá a quienes no les interese esto y permanecerán fieles a su distribución o a quemar ciclos de CPU y de vida para compilar todo. Pero para quienes la computadora es una herramienta más, Flatpak es una respuesta a un reclamo común: bajar, instalar, usar y actualizar la aplicación que usamos, sin necesidad de saber, siquiera, qué distribución estamos usando. ¡Y lo mismo para los desarrolladores! Ya no tienen que hacer, o pedir, recetas de empaquetado para cada distribución que desean soportar.

Flatpak, entonces, es una tecnología muy cercana a la virtualización, entendida como la capacidad de ejecutar una computadora virtual dentro de una computadora real. Si han usado gnome-boxes [2] o qemu [3], tendrán más clara la idea.

Flatpak, exceptuando la arquitectura del CPU (amd64, arm, etc), virtualiza casi todo, lo que permite controlar finamente los recursos que la aplicación solicita. Piénsenlo como cuando se instala una aplicación en Android y les avisa que necesita acceder a la red, a los contactos, a la cámara, etcétera. Pues hagan de cuenta…

Por tanto, ejecutar o compilar una aplicación en Flatpak implica una indirección: se le ordena a la computadora real que le ordene a la computadora virtual ejecutar una acción, y está podrá, o no, ejecutarlo dependiendo del entorno de ejecución, restringido, que tiene configurado.

Flatpak utiliza una tecnología llamada OSTree [4], que es una capa de abstracción sobre el sistema de archivos del sistema operativo, con un espíritu similar a git: transaccional, historial inmutable, con soporte de ramas locales y repositorios remotos, etcétera. Para fines prácticos es un sistema de archivos de sólo lectura, donde las modificaciones se hacen solamente bajo ciertas condiciones.

El principio de las aplicaciones distribuidas por Flatpak es que son, en principio, autocontenidas. Es decir, contienen dentro de ellas mismas todas las dependencias requeridas. Sin embargo, esto es poco práctico para dependencias comunes como las que provee Freedesktop, GNOME y KDE, así que se distribuyen las llamadas application platforms, que básicamente son el conjunto de estas dependencias, versionadas. También hay runtimes, que son librerías del sistema como Mesa u otras implementaciones de OpenGL (por ejemplo las privativas de NVIDIA). Por tanto, cuando se instala una aplicación en Flatpak, esta contiene el manifiesto con la application platform y su versión que necesita.

Finalmente, hay repositorios de flatpak de donde uno puede instalar aplicaciones listas para usar. El más importante y usado es flathub [5].

En conclusión, como usuario, simplemente disfruta de aplicaciones chidas independientemente de tu distribución. Como desarrollador, pos hay que estudiar un poco más para desarrollar para estos entornos (por la indirección a la que obligan, hacen un poco más complejo el debugging).

  1. https://flatpak.org/
  2. https://help.gnome.org/users/gnome-boxes/stable/
  3. https://www.qemu.org/
  4. https://ostreedev.github.io/ostree/
  5. https://flathub.org