Gestores de paquetes universales, diferencias[2/2]

Hace unos días publicamos un artículo hablando sobre los gestores de paquetes universales. En él, repasamos lo que era un gestor de paquetes y que proponían estas alternativas, además de ver los orígenes de algunas de las más importantes.

Por recapitular estos paquetes universales vienen a ser como versiones portables de los programas. Permitiendo al desarrollador compilar y empaquetar una vez y distribuirla en todas las versiones de GNU/Linux. Por otra parte, para nosotros como usuarios también nos aportan la ventaja de que se instalan y desinstalan de una forma más limpia.

Pero como todo tiene sus ventajas y desventajas y ahora vamos a ver como funcionan cada una de ellas y que ventajas y desventajas tiene usar  cada uno.

Es importante señalar que hay una serie de ventajas y desventajas comunes a los tres participantes. Y que, pese a tener la misma filosofía, la forma en la que funcionan internamente es diferente, o al menos ligeramente diferente.

AppImage

Vamos a empezar con Appimage.

Este es el formato que más se parece a una aplicación portable, como se puede ver en Windows. El usuario puede bajar la “imagen” de la app, hacerla ejecutable y usarla.La versión 2 de AppImage es compatible con SquasFS ( quedaos con este nombre que va a salir más veces) podéis leer sobre squashFS aquí SquashFS – Wikipedia, la enciclopedia libre.

  • Se puede ejecutar en la mayoría de las distribuciones de Linux modernas.
  • Es portable, se puede ejecutar en cualquier lugar, incluyendo versiones Live.
  • No es necesario instalar y compilar software.
  • No es necesario el permiso de root los archivos del sistema no se tocan.
  • Las aplicaciones están en modo de solo lectura.

Flatpak

Flatpack se basa en tecnologías existentes como cgroups, espacios de nombres, montajes de enlace y seccomp en el núcleo Linux, OSTree y el formato OCI desarrollado por Open Container Initiative. También ha generado nuevas tecnologías como Bubblewrap, que se comparte entre Flatpak y Project Atomic.

En este punto quiero hacer una mención a Open container initiative, es quien está detrás del estándar abierto de virtualización. Curiosamente es en lo que se basan herramientas como Docker o Podman para crear sus imágenes.

No es casualidad que se diga que Flatpak ( igual que los otros dos de este artículo) son aplicaciones virtualizadas y es que se ejecutan de una forma muy parecida a la que lo hacen los contenedores de docker.

Y es que así es como funciona, al tener todas las dependencias de la aplicación esta se puede ejecutar en modo sandbox y no crear ningún tipo de interferencia con el sistema.

Esto tiene la ventaja de que hace la aplicación más segura y portable pero también aporta algún aspecto negativo que es común a las demás. Lo veremos al final articulo.

Alguna de sus desventajas son:

  • No tiene soporte para server
  • Menos variedad de aplicaciones que Snap
  • No se auto actualiza

SNAP

Snap es la alternativa de canonical a este formato como ya vimos. Snap es un sistema de archivos comprimido, que se apoya en SquashFS ( ya os dije que volvería a salir). Como Flatpak también se ejecuta en un entorno seguro. Los snaps se montan en el sistema al arrancar y nos permiten ejecutar la aplicación desde cualquier punto.

Algunas de las pegas o críticas que tiene snap son:

  • Es algo más complejo de usar que los dos anteriores para los desarrolladores.
  • Sigue siendo un apuesta fuerte por parte de Canonical y es en Ubuntu donde más se usa.
  • Relacionado con el punto anterior, no da soporte a diferentes “stores”, solo puedes bajarte los paquetes con Snap, desde snapcraft y el centro de software de ubuntu.

Pero como ventaja tiene que tiene que es auto actualizable, compatible con servidores y que es compatible en aparatos IoT cosa que los anteriores no.

Visto los elementos comunes y las pegas en particular cabe mencionar algunas desventajas que son comunes a todos.

El peso

Al descargarse las dependencias junto a cada uno de los programas, siempre van a pesar más los paquetes universales.  En el caso de Snap esto es algo más matizable ya que intenta descargar las librerías base para ahorrar algo de espacio, pero no he medido hasta qué punto supone un ahorro.

Integración

No se integran correctamente con el sistema. Al estar aisladas la aplicación no se entiende con tu configuración de entorno. En el caso de Ubuntu no tienes mucha posibilidad de personalizar Gnome, pero si estuvieras en Manjaro con KDE o cualquier otro entorno más personalizable, notarías una diferencia entre la app instalada mediante uno de los métodos anteriores y una “nativa”. Si bien suelen integrarse a nivel de sistema de forma que no notes que es universal a nivel de funcionamiento. El apartado visual es distinto, al menos en la documentación de Flatpak por ejemplo solo comentan como leer si el usuario utiliza el modo oscuro y desde x11, no se nombra wayland. Aunque la sensación que da es que en este apartado todas están avanzando bastante rápido. Me atrevería a decir que Snap y Flatpak al menos. AppImagenes por su construcción es posible que no lo pueda solucionar.

Además al no registrarse en el sistema, no va a reconocer las extensiones de sus archivos. Y no va a constar como aplicación instalada para otras.

Me voy a un ejemplo práctico, recientemente he estado haciendo un curso de Flutter, un Framework para desarrollo de aplicaciones móviles y web. Flutter tiene una herramienta llamada Flutter doctor que chequea el sistema para asegurarse de que este cumple los requisitos para ejecutar flutter. Entre esos requisitos está tener Visual Studio Code o Android Studio, los sdk de android y flutter, dart… En fin una serie de requisitos, curiosamente yo tenía Android Studio instalado mediante flatpak y por tanto el SDK de android descargado desde mi android studio. Pues para flutter doctor ( aplicación “nativa” instalada junto al SDK de flutter) yo no tenía ni Android Studio ni los SDK descargados. Era incapaz de entenderse con esta “app universal”.

Ahora mismo desconozco si esto tendrá una solución a corto plazo.

Seguridad

A priori la idea de “virtualizar” la aplicación la puede hacer más segura, pero la realidad es que se han encontrado vulnerabilidades en X11, el sistema de ventanas de Linux que permite extraer información de estas aplicaciones.

La noticia la podéis leer en “Seguridad de los paquetes Snap comprometida” es algo antigua y desconozco si se ha parcheado ya. Es muy probable que con Wayland no sea replicable.

Existe otra de elevación de privilegios que sí que fue parcheada.

Conclusión

Si bien normalmente vas a seguir usando los paquetes de toda la vida estos nuevos formatos ofrecen una alternativa para instalar software en nuestros GNU/Linux de forma más sencilla, tanto a la hora de instalar como a la hora de mantener esos programas pues no ahorran conflictos.

Si bien puede ser una desventaja que no se integren del todo bien con nuestro entorno, esta carencia se ve compensada con la facilidad y el hecho de poder despreocuparse de la aplicación. Sobre todo en el caso de los Snaps.

En mi opinión, los paquetes snap son los que están un poco por delante en todo y aunque pueda ser algo más complejo para los desarrolladores, Canonical tiene documentación que se antoja suficiente para ponerte en marcha.

Podéis darle un ojo si os interesa en su ducumentación oficial Creating a snap 

Pero como todo en esta vida, es mejor usarlo con moderación.

¿Qué opináis vosotros? ¿Os parece interesante? ¿Usáis alguno de ellos? dejadlo en los comentarios que estaré encantado de leerlos.

Deja un comentario