Bienvenido(a) a Grupo Linuxero del Bajío jueves, octubre 06 2022 @ 12:22 CEST

aplanando paquetes, o flatpakin'

  • domingo, febrero 13 2022 @ 04:06 CET
  • Autor:
  • Lecturas 195
Artículos 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