Comparando Snap y Flatpak. Ventajas y desventajas

febrero 24, 2022 , 0 Comments

Directorio conteniendo paquetes Snap.

Los paquetes Snap se instalan en su propio sector del disco aislados del resto del sistema operativo.

Una de las cosas que más confunden a los nuevos usuarios es la cantidad de formatos de programas disponibles. Cada familia de distribuciones tiene el suyo propio y un paquete creado para una de ellas no puede ser utilizado en otra, aunque admita el mismo formato. Para solucionar esto se empezó a trabajar en un formato universal de aplicaciones autocontenidas, esto es que no requirieran dependencias del sistema operativo.

De esta manera se logra que el programa se pueda instalar en cualquier distribución y que pueda actualizarse, aunque el sistema operativo anfitrión no lo haga. Hablemos de Snap y Flatpak.

Por supuesto, como suele suceder en el mundo del código abierto, no nos podíamos poner de acuerdo en un formato estándar por lo que hasta el momento tenemos tres. Personalmente no descarto la aparición de alguno más en el futuro.

Los conceptos básicos

Captura de pantalla del gestor de software de una distribución Linux

Los gestores de software descargan, instalan y desinstalan paquetes de los repositorios de una distribución Linux.

Comencemos diciendo que en el contexto de este artículo, paquete y programa no son sinónimos. Un formato de paquete es un tipo de archivo que contiene programas informáticos y metadatos adicionales necesarios para que los gestores de paquetes puedan instalarlos. Los programas pueden estar bajo la forma de código fuente o archivos ejecutables y entre los metadatos están indicaciones sobre el directorio de instalación además del nombre, número de versión, licencia y los archivos que forman parte del programa.

Todos los usuarios de teléfonos móviles y tabletas estamos familiarizados con el concepto de tienda de aplicaciones. Se trata de un programa que nos permite buscar, instalar o desinstalar otros programas en nuestros dispositivos. Las tiendas de aplicaciones son una versión renovada de los gestores de paquetes de las distribuciones Linux.

Los gestores de paquetes buscan los programas que queremos instalar en los llamados repositorios. Los repositorios son direcciones web que redirigen a una ubicación específica dentro de un servidor desde la cuál puede descargarse un programa determinado. Ante la falta de conexión a Internet, el medio de instalación puede actuar como repositorio, pero la oferta no será tan amplia ni actualizada.

Los repositorios suelen agrupar los programas por su origen (agregados por los desarrolladores de la distribución, por terceros voluntarios o por organizaciones) o por su licencia (libre o privativa).

Así como un fabricante de cualquier producto no desarrolla todos los componentes desde cero, los desarrolladores no hacen lo mismo con el código. Se utilizan bibliotecas provistas por los creadores del lenguaje de programación (por ejemplo, para la edición de video), frameworks para componer la interfaz de usuario y solicitudes al sistema operativos para tareas como la impresión. Cuando instalan los formatos de paquete tradicionales, los gestores revisan si esas herramientas de terceros necesarias para el funcionamiento de la aplicación elegida se encuentran instaladas o si se pueden conseguir desde los repositorios. Si la respuesta a la segunda pregunta es afirmativa, estas dependencias se instalarán primero. Caso contrario no será posible continuar con la tarea.

La novedad con los dos formatos que estamos analizando es que no necesitan ninguna dependencia instalada en forma previa ya que todo lo que necesitan viene en un mismo paquete con la aplicación.

Comparando Snap y Flatpak

Snap

Si leíste algún otro artículo sobre este tema te habrás encontrado con dos afirmaciones tan repetidas como falsas:

  1. Flatpak es mejor que Snap porque lo desarrolló la comunidad mientras que Snap solo es apoyado por una empresa.
  2. Si usas Snap estás obligado a utilizar la tienda oficial, mientras que cualquiera puede gestionar un repositorio de Flatpak.

La ventaja de leer Linux Adictos es que los redactores investigamos sobre lo que escribimos en lugar de hacer copy/paste. Flatpak tiene las huellas de Red Hat por todos lados. Veremos la implicación de la empresa en el apartado específico de Flatpak.

En cuanto a la segunda afirmación, es falsa porque cualquier servidor web corriendo una distro Linux puede ser una tienda de Snaps. Para prueba este tutorial del año 2016.

Snap es un sistema de empaquetado y distribución multiplataforma desarrollado por Canonical, los creadores de Ubuntu, para la plataforma Linux. Es compatible con la mayoría de las principales distribuciones.

Captura de pantalla de la tienda de Snap

En la tienda de Snap podemos elegir entre distintas versiones de una misma aplicación.

Consta de tres componentes:

  • Snaps: Son los paquetes que crea y distribuye Snap. Se trata de archivos comprimidos en formato >SquashFS y almacenados bajo la extensión .snap. Cada archivo contiene el módulo del paquete completo, incluyendo la aplicación, sus bibliotecas dependientes y metadatos requeridos.
  • Snapd: Es la herramienta que en segundo plano crea el espacio aislado en que se ejecutan los snaps.
  • Tienda de Snap: Es la herramienta que permite a los desarrolladores publicar y a los usuarios descargar los snaps. En algunas distribuciones Linux, el gestor de paquetes tradicional actúa como interfaz gráfica para la búsqueda y descarga. La tienda de aplicaciones se divide en canales que permiten elegir versión de la aplicación y frecuencia de las actualizaciones.
  • Snapcraft: Es la herramienta que permite la creación de los snaps.

Ventajas y desventajas

Desde el punto de vista del desarrollador, Snap brinda la ventaja de poder distribuir directamente su software sin tener que adaptarlo a las particularidades de cada distribución Linux ni esperar a que los desarrolladores la incluyan en los repositorios.

El usuario tiene la ventaja de acceder más rápido a las versiones más actuales de sus programas preferidos sin esperar a las actualizaciones de cada distribución ni sufrir problemas de compatibilidad.

Los paquetes snap tienen un completo sistema de permisos por lo que es posible configurarlos para que interactúen con el sistema operativo y las aplicaciones instaladas por el modo habitual.

El fuerte de Snap son las aplicaciones privativas, o aquellas que incluyen funciones de pago. También hay juegos y programas para Windows que funcionan gracias a Wine, la capa de compatibilidad que hace de puente entre ellas y el núcleo Linux.

En el apartado de desventajas está el tiempo de arranque. Aunque se redujo desde las primeras versiones, las aplicaciones en formato snap tardan bastante más en iniciar que las instaladas normalmente. Además, al incluir todas las dependencias necesarias, el tamaño que ocupa es mayor.

Snap puede usarse para aplicaciones de escritorio, servidores e Internet de las Cosas.

Flatpak

Logo de distribuciones Linux que soportan el formato Platpak

A diferencia de lo que sucede con los formatos de paquetes tradicionales. Un paquete Flatpak puede instalarse sin modificaciones en varias distribuciones Linux.

El nombre de Flatpak remite a los embalajes planos de los muebles de IKEA. Alexander Larsson, quién desarrolló el proyecto después de haber trabajado en Red Hat en tecnología de contenedores, es sueco por lo que el nombre no solo remite a la nacionalidad de su creador sino a la voluntad de que este «embalaje» de aplicaciones Linux sea tan revolucionario como lo fue el de IKEA para los muebles.

El nombre original era xdg-app. Por muy endeble que suenen las razones para el nuevo nombre convengamos que es mucho mejor.

Con respecto a la relación con Red Hat, en las propias preguntas frecuentes se ocupan de aclarar que la tecnología no está limitada a Fedora (distribución comunitaria apoyada por Red Hat) ni a GNOME, indicando en este último caso que muchos desarrolladores de GNOME participaron en el desarrollo de Flatpak. ¿Adivinen para quién trabajan muchos desarrolladores de GNOME?

Aclaro, no tengo nada contra Red Hat, tiene tecnologías fantásticas algunas de las cuales uso, incluyendo Flatpak. Simplemente indico que este formato de paquetes no es tan independiente como algunos quieren creer.

Pero ¿Qué es Flatpak?

Flatpak es un sistema para crear, distribuir y ejecutar aplicaciones de escritorio para distribuciones Linux en un espacio aislado del sistema Linux

Conceptos clave

  • Aplicación Flatpak: estas son las aplicaciones que el usuario instala a través del comando flatpak o a través de una interfaz de usuario diferente como los gestores de paquetes de las distribuciones Linux.
  • Runtime: Plataforma integrada para proporcionar las utilidades básicas necesarias para que funcione una aplicación Flatpak.
  • BaseApp: Plataformas integradas para frameworks de construcción de aplicaciones.
  • Paquete Flatpak: El formato en el que se exporta la aplicación y sus utilidades básicas necesarias.

Ventajas y desventajas

Flatpak comparte algunas de las ventajas de Snap, como por ejemplo el de poder instalarse independientemente de la distribución, incluir todas las dependencias necesarias para su funcionamiento y trabajar de manera independiente del sistema operativo por lo que no está atada a sus errores y ciclos de actualizaciones.

Dos ventajas distintivas es que no requiere privilegios de administrador para su instalación y lo que ellos llaman «actualización Delta» en la que solo se actualizan las modificaciones. Esto redunda en una mayor velocidad.

Cualquiera puede gestionar su servicio de descarga de Flatpak; hasta el momento el más completo para usuarios finales es Flathub. La distribución Linux Fedora también tiene el suyo en el que básicamente transforman los paquetes clásicos de la distribución al nuevo formato.  El escritorio GNOME permite probar las versiones más actuales de sus aplicaciones descargándolas desde el suyo y lo mismo hace KDE.

En cuanto a la integración con el escritorio, el formato promete integración nativa para los principales escritorios de Linux para que los usuarios puedan navegar, instalar, ejecutar y usar fácilmente las aplicaciones de Flatpak a través de su entorno de escritorio y herramientas existentes. Cabe mencionar que el Centro de Software de Ubuntu no admite la instalación de paquetes en este formato.

Flatpak aprovecha mejor el espacio del disco ya que permite compartir bibliotecas entre aplicaciones del mismo formato. El fuerte del formato Flatpak es el surtido de aplicaciones de código abierto desarrolladas por la comunidad que podemos probar en su última versión mucho antes que ingresen a los repositorios

Desde el punto de vista de los desarrolladores, el framework para el desarrollo de aplicaciones Gnome Builder  permite crear los FlatPak en forma gráfica además de disponer de una serie de runtimes ya predefinidos ahorrando tiempo en la creación de aplicaciones.

Entre las desventajas (Además de ocupar mayor espacio en disco que las aplicaciones tradicionales) están en que solo pueden usarse en el escritorio y que a diferencia de los Snap no pueden modificarse los privilegios para que interactúen con el resto del sistema operativo.


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.