AppImage, Snap y Flatpak…. ¿todos o ninguno?

¿Que eso de AppImage, Snap y Flatpak?¿a mi en que me afecta?¿Es necesario que utilice alguno de esos formatos?¿Los tengo que utilizar todos?¿Cual es el mejor entre AppImage, Snap y Flatpak?¿No puedo quedarme como estoy?

Seguro si utilizas alguna distribución Linux, y probablemente aunque no la utilices también, habrás oído o leído sobre AppImage, Snap y Flatpak. Y es que, en estos últimos tiempos estamos viendo movimientos hacia alguno de estos formatos de distribuir aplicaciones.

En particular Ubuntu abandera snap y de hecho, en su última versión 18.04, ya distribuye algunas aplicaciones directamente en paquetes snap. Por otro lado, Flatpak va de la mano de Red Hat, si bien, no es la única compañía que está detrás de este formato. Por último, AppImage no está soportada por ninguna empresa.

AppImage, Snap y Flatpak

AppImage, Snap y Flatpak

Uno de los problemas actuales en el mundo GNU/Linux es la fragmentación. Fragmentación no solo en lo que a distribuciones se refiere, si no también a entornos de escritorio y por supuesto a la distribución de aplicaciones.

Así existen diferentes formatos en los que se distribuyen las aplicaciones dependiendo de la distribución que utilices. Así por ejemplo, Debian y derivados utilizan .deb, mientras que Red Hat utiliza .rpm. No son los únicos formatos, hay mas, por supuesto…

Para resolver este problema surgen diferentes iniciativas, entre las que se encuentran AppImage, Snap y Flatpak. Vamos a adentrarnos en cada una de ellas. Y para no entrar en favoritismos lo haremos por orden de antigüedad.

AppImage

AppImage es un formato que surge para distribuir aplicaciones en Linux sin la necesidad de instalarlo, y sin necesidad de tener permisos de administrador para su ejecución. Pero no solo esto, sino que se trata de permitir su funcionamiento con independencia de la distribución Linux en la que se ejecute.

Esta forma de distribuir aplicaciones se lanzó por primera vez bajo el nombre de klik, para ser renombrada en 2.011 a PortableLinuxApps y en 2.013 a AppImage que es como lo conocemos ahora.

Una de las características mas significativas de AppImage con respecto a los otros dos formatos, es que no la aplicación no se instala. El archivo AppImage es una imagen de la aplicación, de forma que cuando la ejecutamos se monta en el sistema de archivos en el espacio de usuario. Tan solo tienes que dar permisos de ejecución y hacer doble clic sobre el.

AppImage, no tiene una tienda de aplicaciones desde donde descargarlas. Lo cierto, es que tal y como he explicado, puedes descargarla desde cualquier sitio, darle permisos de ejecución, y ponerla en marcha. Sin embargo, existe un lugar donde encontrar y descargar unos cientos de aplicaciones, se trata de AppImageHub.

Tal como sucede con los otros formatos, se trata de una solución completamente autónoma. Es decir, incluye todas las librerías necesarias para que funcione por si solo.

Uno de los problemas con los que podemos encontrarnos con AppImage es que no se integra con el entorno de escritorio, lo cual es una ventaja o un inconveniente. Sin embargo, opcionalmente, podemos utilizar un demonio, appimaged, que permite de forma sencilla integrar las aplicaciones AppImage con el sistema.

Este demonio, se encarga de poner las aplicaciones AppImage en los menús, registrar los tipos MIME, iconos, etc, y todo ello al vuelo. Lo único que necesitarás es descargarlo, pero como digo es algo totalmente opcional.

Por otro lado, para la actualización de aplicaciones, también necesitarás de otro AppImage, en particular de AppImageUpdate. Esta herramienta se encarga de revisar las AppImage que tienes instaladas y actualizarlas en el caso de que exista una actualización.

Snap

Al igual que sucede con Flatpak, los paquetes Snap son gestionados por una herramienta. En este caso, la herramienta es snapd, y es la encargada del despliegue y gestión de paquetes y aplicaciones. Esta herramienta está disponible en varias distribuciones (con mas o menos suerte) y por tanto permite el uso de estos paquetes en estas distribuciones.

Y digo que esta disponible con mas o menos suerte, porque depende del grado de aceptación de cada una de las distribuciones, como veremos mas adelante. Respecto a este formato, ya escribí un artículo en su momento, que te recomiendo que leas, Que son los paquetes snap, tiendas y situación actual.

En diciembre de 2.014 Mark Shuttleworth anuncia snappy, cuya primera versión se libera esa mismo mes.

Los snaps no depende de ninguna tienda de aplicaciones. Se pueden obtener de cualquier fuente, descargados e instalados.

A diferencia de Flatpak, con Snap, no solo tienes aplicaciones de escritorio sino también, aplicaciones de línea de comandos como al igual que servicios.

Flatpak

Flatpak surge como idea en 2.013 y es en 2.014 cuando se publica un artículo sobre este formato, que originalmente se llamó xdg-app. Sin embargo, la primera versión se liberó en Julio de 2.016. Se desarrolló como parte del proyecto freedesktop.org.

Flatpak es una herramienta que nos permite desplegar, gestionar y virtualizar aplicaciones en entornos de escritorio Linux. Flatpak está diseñado para funcionar en sesiones de escritorio, en tanto en cuanto utiliza servicios proporcionados por la sesión, como puede ser dbus. Proporciona un entorno aislado del sistema, y donde las aplicaciones que utilizan Flatpak necesitan aprobación de permisos para utilizar determinado hardware o acceder a determinados archivos.

Aunque inicialmente, Flatpak fue implementada por desarrolladores unidos a la comunidad GNOME, la realidad, es que este formato no está atado a ningún escritorio en particular. De hecho, el objetivo principal, de este formato es el de facilitar que el desarrollador pueda construir sus aplicaciones utilizando cualquier librería y lenguaje de programación que quiera.

En febrero de 2.017 algunas de las aplicaciones mas populares en el universo Linux, ya estaban disponibles en este formato, como pueden ser Blender, Gimp o LibreOffice. Actualmente puedes encontrar cientos de aplicaciones disponibles para instalar, utilizando esta tecnología en FlatHub.

Al igual que sucede con el resto de formatos, la ventaja de Flatpak respecto a la forma tradicional de distribuir paquetes, es que con un solo formato, puedes instalar tu aplicación en cualquier distribución. A esto, le tenemos que unir la ventaja de que el desarrollo y prueba de una aplicación es independiente de la distribución e idéntico al que el usuario tendrá.

Eso si, Flatpak, instala una serie de runtime para que los puedan utilizar las aplicaciones. Y en el caso de que alguna dependencia no se encuentre en esos runtime, siempre lo puedes empaquetar en tu aplicación.

Adopción de formatos entre AppImage, Snap y Flatpak

En en diferentes artículos del desarrollador de KDE Markus Slopianka nos da una visión de la situación. En particular, he actualizado su trabajo a Julio de 2.018, indicando las versiones adoptadas por cada una de las distribuciones. Además lo he completado con AppImage, que no está incluido en sus artículos originales, de forma que ahora podemos ver los tres formatos AppImage, Snap y Flatpak en la misma tabla.

Para ello, me he basado en que tuvieran appimaged, que es el demonio que permite la integración con el entorno de escritorio. Con todo ello, a continuación puedes encontrar el resumen con los enlaces de la situación en el momento de escribir el artículo,

 AppImageFlatpakSnap
Arch LinuxNo disponible0.99.2No disponible
DebianNo disponible0.99.22.30
FedoraNo disponible0.99.22.33.1
GentooNo disponible0.10.42.15.2
MageiaNo disponible0.10.3No disponible
openSUSE90.11.82.33.1
RHEL/CentOSNo disponible0.8.8No disponible
UbuntuNo disponible0.11.72.32.9

Como puedes ver, el soporte a AppImage, en lo que a integración se refiere, no está incluido en ninguna distribución salvo OpenSUSE. Aunque siempre es posible bajarse el AppImage de appimaged. Si bien, y esto es mi opinión, no creo que sea la mejor solución, en cuanto a experiencia de usuario. Creo que esto debería estar integrado en la propia distribución para ayudar al usuario, sobre todo al mas novel, con el uso de aplicaciones.

Por otro lado, en cuanto Flatpak y Snap, la adopción es bastante irregular, en lo referente a versiones, tanto en Flatpak como en Snap. Si bien es cierto que está mas generalizada la adopción de Flatpak por las distribuciones. De todas formas, ten en cuenta que esto es una fotografía de la situación en la que escribí este artículo, es posible, que hoy cuando tu lo estés leyendo sea completamente distinta.

Por otro lado, me llama la atención que haya distribuciones que tenga una versión superior de snapd a la del propio Ubuntu.

Comparativa de características entre AppImage, Snap y Flatpak

A continuación encontrarás una comparativa entre los diferentes formatos. Esta comparativa está basada en la original realizada por AppImage en GitHub. En esta comparativa no se incluyen todas las características del original, y algunas están modificadas, adaptándolas el momento de escribir este artículo.

General

CaracterísticaAppImageSnapFlatpak
Aplicaciones de escritorioSiSiSi
Herramientas de terminalSiSiSi
ServiciosSiSINo
Aplicación correcta de temasSiNoNo
Librerías y dependenciasEn la propia imagenEn la propia imagen o con complementosUso de runtimes de las librerías principales
SoporteNingunoCanonicalRed Hat y otros

Confinamiento

CaracterísticaAppImageSnapFlatpak
Sin confinamientoSiSiNo
Puede utilizar diferentes confinamientosSiNo (solo AppArmor)No (solo Bubblewrap)

Instalación o ejecución

CaracterísticaAppImageSnapFlatpak
EjecutableSiNo . Necesita instalaciónNo . Necesita instalación
Sin rootSiNo. Necesita root para instalar.No. Necesita root para instalar.
Ejecutable desde comprimidoSiSiNo

Distribución de aplicaciones

CaracterísticaAppImageSnapFlatpak
Repositorio centralAppImageHubSnapCraftFlatHub
Necesita repositorioNoNoNo
Repositorios individualesNoSiSi
Multiples versiones en paraleloSiSiSi

Actualizaciones

CaracterísticaAppImageSnapFlatpak
Mecanismo de actualizaciónAppImageUpdateRepositorioRepositorio
Actualizaciones incrementalesSiSiSi
AutoactualizacionesSiNoNo

Tamaño en disco

CaracterísticaAppImageSnapFlatpak
Aplicación en disco comprimidaSiSiNo
LibreOffice 6.0.0200 MB200 MB659 MB

Estas son algunas de las características del artículo original que he indicado anteriormente. Como he comentado, algunas están actualizadas y he omitido otras. Aunque creo que lo mas importante e interesante para ti, está recogido en las características que has podido leer mas arriba.

Conclusiones

Lo que voy a comentar a continuación es mi opinión, que por supuesto, puedes compartir o no. Esta opinión está avalada por mi experiencia en el uso de las tres tecnologías, y por la información que he utilizado para escribir el artículo que estás leyendo.

El problema de la fragmentación de formatos

No estoy a favor de ninguna de las tres tecnologías, AppImage, Snap y Flatpak, y en caso de decantarme por una de ellas sería por AppImage. Y no estoy a favor, porque creo que la forma en la que se crean y distribuyen las aplicaciones actualmente es la mas adecuada, ya sean archivos .deb, .rpm. Y digo que es la manera mas adecuada, en tanto en cuanto, aprovechas las librerías que ya están instaladas en el equipo del usuario, para lo que haces uso de las dependencias. Es decir, se fomenta compartir el uso de librerías.

Cualquiera de las tecnologías comentadas, te obliga a empaquetar tu aplicación con el resto de librerías que necesita, creando un paquete significativamente voluminoso. Evidentemente, el problema de esto, son las dependencias y las versiones. Sin embargo, actualmente yo no he tenido problemas, al menos en Ubuntu y Linux Mint, de no poder instalar una aplicación de las que utilizo habitualmente por problemas de dependencias.

Por supuesto, si recurrimos a repositorios de terceros, es muy posible que tengamos estos problemas. Sin embargo, esto es un problema de versionitis, de querer utilizar lo último de lo último, cuando en la mayor parte de los casos, no aprovechamos ni el 80% de las posibilidades que una aplicación nos ofrece. De verdad ¿has probado todos los filtros de GIMP o Inkscape?¿Utilizas el control de versiones de LibreOffice o los estilos?…

Por otro lado, necesitas instalar aplicaciones adicionales para que todo esto sea gobernable tanto en Snap como en Flatpak. En AppImage, al menos de inicio no, pero si quieres una mejor experiencia de usuario, necesitarás instalar el paquete de integración con el escritorio, al menos.

Con todo ello, tenemos además unos servicios que están corriendo en segundo plano, y por supuesto consumiendo recursos. Lo cual, en máquinas potentes, no tiene importancia, pero, sin embargo, en máquinas con recursos limitados, puede llegar a ser un problema.

Evidentemente, teniendo en cuenta que las máquinas que utilizamos cada vez son mas potentes y con discos duros cada vez mayores, un forma de resolver el problema de la fragmentación de formatos, gastando mas recursos. Para evitar que tengas un problema de dependencias las metemos todas en el paquete, hacemos correr un demonio para el funcionamiento, otro para las actualizaciones… Y al final de todo, seguimos con el mismo problema de fragmentación de formatos, AppImage, Snap y Flatpak.

¿De verdad que no hay una forma mas simple y elegante de resolver el problema?

Muy bien, pero ¿por que formato me decanto?¿AppImage, Snap y Flatpak?

Yo actualmente, voy a seguir como hasta ahora, es decir utilizando paquetes .deb, eso si desde repositorio. Preferentemente desde los repositorios oficiales de Ubuntu, pero en caso de que no pueda ser, desde repositorios personales PPA. Aunque, eso si, sin perder de vista, ninguna de, las tres tecnologías, AppImage, Snap y Flatpak.

En el caso de que alguna aplicación no esté disponible para Ubuntu, me decantaré primeramente por AppImage, puesto que actualmente no tengo instalado Snap en mi equipo. Y llegado el momento, y si no queda mas remedio me decantaría seguidamente por Snap, por ser lo que fomenta la distribución que utilizo.

Desde mi punto de vista, prefiero AppImage, porque no me obliga a instalar nada mas, ni necesito un demonio funcionando en segundo plano. A menos, claro, que quiera la integración con el sistema o el tema de las actualizaciones.

Como he comentado, actualmente no tengo instalado Snap en mi equipo, por dos razones. Por un lado, porque demora el arranque del equipo y por el otro, consume recursos, aunque no estemos utilizando ninguna aplicación.

Teniendo en cuenta que todas las aplicaciones que necesito están en los repositorios oficiales o en repositorios personales, PPA. Voy servido.

Esto es lo que hago yo, y lo que yo te recomendaría si me preguntaras… Sin embargo, esta es la grandeza del software libre, no existe un solo camino, sino que existen diferentes caminos y soluciones para cada usuario…


Más información,

17 comentarios en “AppImage, Snap y Flatpak…. ¿todos o ninguno?

  1. PA
    Pandito hace 6 años

    Yo el mayor problema que les veo y no noté tanto en flatpak como en snap es el acceso a disco restringido que les ponen. Estoy con Kubuntu 18.04 y todas las apps que probé en esos formatos acceden solo a directorios específicos. Por ejemplo, la de spotify te deja entrar a music. No reconoce la carpeta música ni los enlaces simbólicos por lo que no tiene acceso a donde realmente guardo mis archivos. Con otras apps lo mismo, ninguna me dejaba acceder a contenidos de otros discos rigidos por fuera de mi /home de usuario.

    1. EL
      El atareao hace 6 años

      Hola Pandito
      Si, por un lado es un inconveniente, pero por otro, una ventaja, pues te aseguras de que no van a hacer ninguna fechoría…
      Un saludo

  2. CA
    Carlos Espino Angulo hace 6 años

    Hola!
    Yo he tenido un caso en el que snap «me salvó la vida». Necesitaba generar para un trabajo títulos con OpenShot y no había manera de que tirara con Blender. Tras mucho googlear y varios intentos, me bajé una imagen con los dos programas instalados y ¡listo!
    Sí, es una chapuza, normalmente es mucho mejor perder/invertir tiempo en hacerlo funcionar y aprender para la siguiente…pero iba muy pillado de tiempo y me solucionó el problema.
    Pero coincido contigo, no hay nada como nuestros repositorios oficiales y un puñado de PPA.
    Un saludo y, como siempre, gracias por tus posts.

    1. EL
      El atareao hace 6 años

      Hola Carlos,
      Bueno, cuando la necesidad apremia… La ventaja de los snap es que te aseguras el funcionamiento.
      Un saludo

  3. UG
    Ugo Yak hace 6 años

    Interesante e informativo artículo. Personalmente me decanto más por Appimage (no me interesan que se actualicen todo el tiempo y crear un atajo que los inicie es simple. El hecho de que sean portables me resulta muy práctico y además es mucho menor lo que ocupan: por ejemplo en el caso de «Peek», son 60 MB en formato Appimage, y 600 para descargar como Flatpak y 2,1 GB instalado (al menos eso es lo que dice el Gestor de Software).

    1. EL
      El atareao hace 6 años

      Si. Los cierto es que ocupan una barbaridad… Mucho más flatpak que snap.
      Respecto a AppImage, ¿Has probado a instalar la aplicación de integración?
      Gracias y un saludo

      1. UG
        Ugo Yak hace 6 años

        Fue leyendo este artículo donde conocí que existían estas apps de integración, no ha probado la de actualización (de momento, al menos) pero sí «appimaged». Para instalarlo se descarga la appimage, se le dan los permisos de ejecución y se lo ejecuta desde una terminal con la opción –install; luego pide que reinicies sesión y el demonio leerá determinadas rutas preestablecidas (como «Descargas» o «/Applications» entre otras) y si detecta algún appimage genera automáticamente el atajo. Funciona como promete, aunque la única pega que me da (probado en Linux Mint 19 Cinnamon) es que el menú no interpreta correctamente la ruta de la imagen para el icono del lanzador generado (no se coloca el nombre genérico de la aplicación sino una ruta del tipo: Icon=appimagekit_c22eb4c73c92e7ccfcb5e5c10f76474b_com.uploadedlobster.peek )

        1. EL
          El atareao hace 6 años

          Muchas gracias por contar tu experiencia. Creo que le diste un artículo completo a este sistema.
          Un saludo

  4. PA
    Paco hace 6 años

    Hola
    Lo veo un poco verde por lo menos lo que he probado.Estoy en Ubuntu y si instalas vlc por ejemplo tarda mucho en arrancar y no logra acceder a vdpau de mi nvidia para ver mkv.Lo que me obliga a instalar la versión normal que va de perlas.Es como las aplicaciones de dmg en Mac pero sin ese refinamiento

    1. EL
      El atareao hace 6 años

      Hola,
      Lo cierto es que tanto Flatpak como Snap los veo verdes como tu dices, no así el caso de AppImage, que hasta el momento ha funcionado todo perfectamente.
      Saludos.

  5. QU
    QuijoteLibre hace 6 años

    Un gran artículo que me ha resultado muy ilustrativo.
    Yo que padezco algo de versionitis, tenía un cierto reparo con estos «inventos» y después de leerte, estoy totalmente de acuerdo contigo.
    los problemas de fragmentación del mundo GNU/Linux se derivan de su libertad, y de los distintos intentos a lo largo del tiempo por hacerse con el control del sistema de diferentes empresas con fines puramente comerciales.
    Todos estos proyectos estan encaminados a a que se cambie la winstore por otra store, eso sí, que sea la mía …
    Y no hacen más que dar vueltas a ver cómo lo consiguen.

  6. JU
    juan carlos lopez hace 6 años

    yo uso deepin y me abre normal el appimage sin instalar nada de nada

  7. AL
    Alain D. Puga Rondon hace 3 años

    Buenas me encanta tu articulo es muy bueno y pieso que deberias de seguir actualizandolo con el tiempo. Tambien pienso que usar los repos oficiales es lo mejor.

  8. JU
    JuanXpo hace 3 años

    A mí lo q me cabrea es q todo se «resuelve» por «fuerza bruta»: instalar una imagen con todas sus dependencias en vez de aprovechar el ecosistema instalado en tu máquina. Pero, claro, eso requiere un trabajo más cuidadoso… En ese plan, acabaremos virtualizando máquinas enteras, y así estaremos seguros. Pero no es el rumbo más «orgánico», y se basa, como en tantas otras ramas de IT, en el despilfarro de unos recursos que, eso sí, son cada vez más «asequibles».
    En fin, que voy a instalar inkscape en una máquina que acabo de ubuntuzar (LG 240 AIO), y resulta que apt-get instala 0.9, pero snap va ya por la 1.x… Y tras estar – una vez más – más de una hora con la info en red, acabaré bajándome el snap, con la convicción de q, en realidad, no necesito ni la mitad de las librerías. Y con snap apareciendo por tóo el árbol.

  9. MN
    Mna hace 2 años

    Thanks, it’s a very good article!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *