¿Qué es Flatpak?
Flatpak es una tecnología relativamente nueva que cuenta con el apoyo de RedHat Inc. y que poco a poco va creciendo en popularidad conforme al incremento de aplicaciones .flatpak que van surgiendo de diferentes proyectos. Flatpak es un marco de trabajo (Framework) que permite crear y distribuir aplicaciones las cuales podremos instalar de forma sencilla en nuestro sistema. Claro que con los conocimientos apropiados también podremos crear nuestras propias aplicaciones si quisiéramos.
Los que nos movemos en el mundo Linux conocemos la gran variedad de distribuciones y sus respectivas versiones, además de sus librerías (bibliotecas) con su propia versión y los diferentes formatos de empaquetado. Flatpak viene a ser una solución para eliminar esa brecha y permitir ejecutar una misma aplicación en diferentes distribuciones Linux, incluyendo diferentes versiones.
De acuerdo al sitio oficial, se diseñó desde el principio pensando en la seguridad, por lo que las aplicaciones están aisladas unas de otras y desde el sistema principal. Vendría a ser la contra-cara de los paquetes Snap de Ubuntu.
¿Cómo funciona Flatpak?
Runtimes (Tiempos de ejecución)
Tiempos de ejecución contienen las dependencias que son utilizadas por las aplicaciones. Ellos son siempre los mismos independientemente de la distribución Linux que se esté utilizando. En este aspecto, las aplicaciones no tendrán que actualizarse para adaptarse a los cambios de la distribución.
Actualmente se encuentran disponibles tres tiempos de ejecución:
- GNOME
- KDE
- FreeDesktop
Bundles (Bibliotecas empaquetadas)
Aquí se encuentran las bibliotecas que no están en Runtimes. Estas son agrupadas —empaquetadas— como parte de la aplicación. De esta forma posibilita el uso de las dependencias que no están en una distribución, y de utilizar una versión diferente de una dependencia de la que está en una distribución.
Sandboxes (Cajas de arena)
Esta tecnología cuyo objetivo es el aislamiento de procesos es bastante empleada en multiplicidad de proyectos: máquinas virtuales, contenedores, micro-kernels, servicios web, etc. Particularmente me familiaricé con el término Sandbox en Gentoo Linux, el cual también nos permite crear cajas de arena. La mayoría de las distribuciones tienen disponible esta útil herramienta.
En el caso que nos atañe; Flatpak, este aísla aplicaciones desde el sistema operativo anfitrión, así como de otras aplicaciones. Esto proporciona seguridad para los usuarios y un entorno previsible para los desarrolladores.
Instalación de Flatpak
Algunas de las distribuciones más populares ya ofrecen la aplicación Flatpak en sus repositorios oficiales. En otras distros está disponible a través de la comunidad.
Para instalarla ejecutamos los siguientes comandos desde un terminal —con privilegios root—:
Fedora 23 en adelante y Mageia
dnf install flatpak
Debian experimental
apt install flatpak
Debian jessie
wget -O - https://sdk.gnome.org/apt/debian/conf/alexl.gpg.key|apt-key add - echo "deb [arch=amd64] https://sdk.gnome.org/apt/debian/ jessie main" > \ /etc/apt/sources.list.d/flatpak.list apt install apt-transport-https apt update apt install flatpak
Ubuntu 16.04
add-apt-repository ppa:alexlarsson/flatpak apt update apt install flatpak
Arch Linux
pacman -S flatpak ## Desde los repositorios AUR yaourt -S flatpak-git
Yo he utilizado openSUSE Leap 42.1 para las pruebas e instalé Flatpak mediante Click Install
Aplicaciones disponibles en formato Flatpak
GNOME es el proyecto que cuenta con más aplicaciones en formato Flatpak, ha apoyado al proyecto desde el comienzo. Incluso es posible instalar aplicaciones con GNOME 17 en versiones estables —actualmente 3.20—.
En el caso de Fedora 24 estos no son muy útiles, ya que cuenta con la última versión, GNOME 3.20. Sin embargo usuarios de Fedora 23 con GNOME 3.18 pueden aprovecharlo.
GNOME también provee una larga lista de versiones nightly que se convertirán en GNOME 3.22, y son las que estarán disponibles en los repositorios GNOME de Fedora 25.
Para aquellos que seguimos los pasos de Fedora, en la próxima versión (25) Flatpak estará completamente integrado en el software de GNOME, por lo que instalar este tipo de aplicaciones será aún más fácil: descargar el archivo .flatpak, doble-click en él y se instalará por si solo.
Repositorios disponibles actualmente —también existen otros proyectos independientes—:
- gnome-apps (versión estable)
- gnome-nightly-apps (se construyen diariamente)
- nightly-graphics (construcciones diarias de aplicaciones gráficas más comunes)
Instalar nuestra aplicación Flatpak
Una vez que tengamos instalado y funcionando Flatpak ha llegado el momento de instalar nuestra aplicación. Para ello antes debemos añadir:
- Repositorio que contiene las aplicaciones GNOME
- Repositorio que contiene el motor de tiempo de ejecución (runtime) de GNOME para proveer las dependencias necesarias.
De los tiempos de ejecución (runtimes) se desprenden dos versiones:
stable runtimes:
nightly runtimes:
Ejecutar en un terminal:
wget https://sdk.gnome.org/keys/gnome-sdk.gpg flatpak remote-add --gpg-import=gnome-sdk.gpg gnome https://sdk.gnome.org/repo/ flatpak remote-add --gpg-import=gnome-sdk.gpg gnome-apps \ https://sdk.gnome.org/repo-apps/ ## Intalación de Runtimes flatpak install gnome org.gnome.Platform 3.20
Llegado a este punto ya estaremos en condiciones de instalar aplicaciones — GNOME estable, en este caso —. Para ver un listado de las aplicaciones disponibles ejecutamos:
flatpak remote-ls gnome-apps --app
para instalar una aplicación —p.ej., Gedit:
flatpak install gnome-apps org.gnome.gedit stable
Corremos la aplicación —también se puede hacer desde el lanzador de la aplicación si no quieres usar la terminal—:
flatpak run org.gnome.gedit
Si te interesa probar lo que vendrá solo hace falta añadir los repositorios nightly respectivos:
wget https://sdk.gnome.org/nightly/keys/nightly.gpg flatpak remote-add --gpg-import=nightly.gpg gnome-nightly-apps \ https://sdk.gnome.org/nightly/repo-apps/ flatpak remote-add --gpg-import=nightly.gpg gnome-nightly \ https://sdk.gnome.org/nightly/repo/
Las aplicaciones gnome-nightly-apps requieren de la versión nightly de org.gnome.Platform runtime además de utilizar el nombre de versión master:
flatpak remote install gnome-nightly org.gnome.Platform master
Listar repositorios disponibles e instalar p.ej., Gitg:
flatpak remote-ls gnome-nightly-apps --app
Instalación:
flatpak install gnome-nightly-apps org.gnome.gitg master
para actualizar la aplicación:
flatpak update org.gnome.gitg master
Por último nos encontramos con el repositorio nightly graphics, este contiene las construcciones diarias de algunas de las aplicaciones gráficas más comunes.
- GIMP (incluida la versión GTK+3)
- Inkscape
- MyPaint
- Scribus
Estas aplicaciones requieren de org.gnome.Platform 3.20 (runtime) la cual se instaló anteriormente. Para habilitar nigthly-graphics ejecutamos:
wget http://209.132.179.2/keys/nightly.gpg flatpak remote-add --gpg-import=nightly.gpg nightly-graphics \ http://209.132.179.2/repo/
Listar aplicaciones:
flatpak remote-ls nightly-graphics --app
para instalar —observar que al igual que gnome-nightly también se utiliza master como nombre de versión —:
flatpak install nightly-graphics org.inkscape.InkscapeDevel master
Como había expresado anteriormente, otros proyectos también ofrecen empaquetado en formato Flatpak. KDE cuenta a la fecha con 13 aplicaciones (nightly builds). Por su parte otro gran proyecto The Document Foundation ofrece LibreOffice.flatpak el cual se encuentra disponible en su página oficial y es el que instalaremos como prueba.
Instalación de LibreOffice 5.2 Flatpak
wget https://sdk.gnome.org/keys/gnome-sdk.gpg flatpak remote-add --user --gpg-import=gnome-sdk.gpg gnome \ https://sdk.gnome.org/repo/ flatpak install --user gnome org.gnome.Platform 3.20
Si queremos que LibreOffice utilice el idioma de nuestro entorno de escritorio:
flatpak install --user gnome org.gnome.Platform.Locale 3.20
Finalmente descargamos el paquete LibreOffice.flatpak y ejecutamos en un terminal, en la misma carpeta donde hayamos descargado nuestro paquete:
flatpak install --user --bundle LibreOffice.flatpak
No es necesario desinstalar una versión de LibreOffice de nuestros repositorios oficiales —lo mismo aplicaría para cualquier otro paquete—, ya que la aplicación que acabamos de instalar no interferirá en absoluto con dicho paquete.
Podemos ejecutar LibreOffice mediante el lanzador de aplicaciones, o en consola con la siguiente orden:
flatpak run org.libreoffice.LibreOffice
En este caso se ha instalado la versión LibreOffice 5.2 beta, sin embargo el paquete LibreOffice.flatpak se conecta con un repositorio del servidor download.documentfoundation.org que se actualiza a la versión más reciente de LibreOffice. Por lo tanto cuando se publique una nueva versión podremos actualizar nuestro paquete instalado ejecutando:
flatpak update --user org.libreoffice.LibreOffice
De esta forma tendremos ambas suites ofimáticas: la última versión disponible de LibreOffice para pruebas y la versión oficial de nuestros repositorios para casos en los que necesitemos más estabilidad.
Algunas notas importantes que nos indican en el sitio oficial:
- LibreOffice.flatpak se basa en el motor de tiempo de ejecución de GNOME 3.20, que utiliza la interfaz GTK+ 3 de LibreOffice, la cual provee compatibilidad con servidores como Wayland, entre otras funcionalidades.
- Este paquete único incluye todas las traducciones disponibles en LibreOffice, ya que no afectan considerablemente su tamaño.
- Las aplicaciones empaquetadas con Flatpak no son capaces todavía de comunicarse con el resto de los programas instalados en un equipo, lo que significa que no es posible, por ejemplo, pulsar en un enlace de un documento de Writer para abrirlo en un navegador. Y como LibreOffice.flatpak no incluye la versión de la Ayuda sin conexión en todos los idiomas, tampoco funcionará la tecla F1 para utilizar la Ayuda en línea.
- LibreOffice.flatpak no incluye ningún entorno de ejecución de Java (JRE, por sus siglas en inglés). Las características que necesitan un JRE no funcionarán.
- Por el momento no existen versiones en Flatpak del kit de desarrollo de software (SDK) de LibreOffice.
Eliminar repositorios
Por ejemplo, si quisiéramos eliminar el repositorio nightly-graphics bastaría con:
## Listar los repositorios flatpak remote-list ## Eliminar un repositorio deseado flatpak remote-delete nightly-graphics
Desinstalar aplicaciones/runtimes
Para desinstalar una aplicación ej., Gedit estable:
flatpak uninstall org.gnome.gedit stable ## Si se utilizó la instalación con el parámetro --user flatpak uninstall --user org.gnome.gedit stable
En el caso de quitar un tiempo de ejecución (runtime) p. ej., la versión 3.20:
flatpak uninstall org.gnome.Platform 3.20 o flatpak uninstall --user org.gnome.Platform 3.20
Para ver todas las opciones disponibles ejecuta: flatpak --help
en la terminal.
Conclusiones
Las distribuciones Linux se han diversificado de tal forma que ya no existe plena compatibilidad como en el pasado, ni siquiera entre derivadas de una distro en particular. Es ahí dónde herramientas como Flatpak nos puede ofrecer una solución concreta a un problema de manera fácil y segura, además con el aliciente de probar aplicaciones en sus últimas versiones sin interferir con la estabilidad de nuestro sistema.
Sin embargo no es una solución que contenta a todos. Muchos desacuerdos se producen cuando se trata sobre esta clase de herramientas, la «hinchazón» del sistema es el argumento que más se discute, no obstante —en mi opinión personal— creo que todo lo que sirva para unificar es más que bienvenido.
Ya era hora, cuando Flatpack y Snap entren al mainstream va a ser mas facil adoptar Linux en Cuba.
Hace unos días salió todo un artículo de un desarrollador de por allá por los países nórdicos (casi que al lado de la casa Linus Torvall jajaja ) donde se trataba como el concepto de SnapPacket abría brechas de seguridad en los sistemas GNU (y similares), ahora mismo no recuerdo donde fue que lo leí pero bueno… yo estoy contigo en eso de que en Cuba serán bien acogidos los SnapPackets, FlatPackets o cuanto packet que no dependa de un repo especifico o una distro especifica aparezca ¿fue eso lo que quisiste decir no 😉 ?
Exacto, por ejemplo, en la seccion de !!!Software Actualizados del paquete pudieramos ver el ultimo GIMP, Python, VLC o Squid y ya no habria que esperar a actualizar repos o depender de ellos.
Buen artículo; bien estructurado.
Gracias!!