[fat-flatpak-intro.png]

Algo que a menudo toma por sorpresa a las personas cuando usan una distribución Linux de escritorio es que las aplicaciones Flatpak consumen mucho espacio de almacenamiento.

Un puñado de aplicaciones que ocuparían unos pocos cientos de megabytes como paquetes tradicionales de alguna manera se inflan a múltiples gigabytes cuando se instalan vía Flatpak.

Entonces, ¿qué está pasando? ¿Por qué instalar un simple editor de texto como Flatpak requiere cientos de MB cuando la versión del paquete nativo requiere un espacio de almacenamiento mínimo?



El Problema de Dependencias que Flatpak Resuelve

En los sistemas Linux tradicionales, las aplicaciones dependen de bibliotecas compartidas del sistema. Esto es eficiente, por ejemplo, si 10 aplicaciones necesitan la misma biblioteca, solo se almacena una vez en el disco.

Sin embargo, esto crea un par de problemas:

  • Conflictos de Versiones: La aplicación A necesita la versión 1.2 de la biblioteca, pero la aplicación B necesita la versión 1.5.
  • Fragmentación de Distribuciones: Una aplicación construida para Ubuntu podría no funcionar en Fedora debido a diferentes versiones de bibliotecas.
  • Actualizaciones del Sistema Rompiendo Aplicaciones: Una actualización de biblioteca del sistema podría romper aplicaciones que dependían de la versión antigua.

Para los Flatpaks, cada aplicación trae sus propias dependencias y se ejecuta en un sandbox aislado. No más conflictos de dependencias, y no más preocupaciones sobre actualizaciones del sistema rompiendo cosas, sin embargo, el precio a pagar es el espacio de almacenamiento…



Cómo Flatpak Usa el Almacenamiento

El modelo de almacenamiento de Flatpak consiste en 3 componentes principales:


Aplicaciones

Estos son los programas reales que instalas. Cada aplicación Flatpak es autónoma en su propio sandbox e incluye cualquier dependencia que no sea proporcionada por su runtime.


Runtimes

Los runtimes son fundaciones compartidas que proporcionan dependencias comunes para las aplicaciones. En lugar de que cada aplicación empaquete GTK, Qt o bibliotecas del sistema central, las aplicaciones pueden depender de un runtime que proporciona estas.

Los principales runtimes incluyen:

  • Freedesktop: El runtime base que proporciona bibliotecas centrales y cadenas de herramientas.
  • GNOME: Construido sobre Freedesktop, añade bibliotecas específicas de GNOME.
  • KDE: Construido sobre Freedesktop, añade bibliotecas Qt y KDE.

Repositorio

Flatpak usa OSTree para almacenar archivos en /var/lib/flatpak para instalaciones a nivel del sistema o ~/.local/share/flatpak para instalaciones de usuario. Este repositorio contiene todos los datos reales a partir de los cuales se construyen las aplicaciones y runtimes.



Por Qué los Números Se Ven Peor de lo que Son

Flatpak usa hard links para deduplicación. Cuando múltiples aplicaciones o runtimes comparten el mismo archivo, Flatpak no lo duplica - crea hard links que apuntan a los mismos datos en el disco. Esto significa que un archivo puede aparecer en múltiples lugares, pero solo se almacena una vez.

¿El problema? Herramientas estándar como du cuentan los hard links por separado, haciendo que parezca que estás usando mucho más espacio del que realmente usas.

Por ejemplo, si ejecutas:

du -sh /var/lib/flatpak

Podrías ver algo como 15 GB. Pero el uso real del disco (contando los datos deduplicados) podría estar más cerca de 8-10 GB. Las herramientas que entienden los hard links te darán una imagen más precisa.



Deduplicación en Flatpaks

La deduplicación de Flatpak funciona en múltiples niveles:

  • Entre Runtimes: Los runtimes GNOME y KDE están ambos construidos sobre el runtime base Freedesktop, por lo que comparten esos archivos comunes en lugar de duplicarlos.
  • Entre Aplicaciones: Las aplicaciones que usan el mismo runtime comparten esos archivos del runtime. Instalar una segunda aplicación GNOME no requiere descargar todo el runtime GNOME nuevamente.
  • Entre versiones: Cuando los runtimes se actualizan, solo se descargan y almacenan los archivos modificados. Los archivos sin cambios se comparten entre versiones.

Esta es la razón por la que la primera instalación de una aplicación Flatpak puede ser enorme (se descarga todo el runtime), pero las instalaciones posteriores son mucho más pequeñas.



El Costo Real de Almacenamiento

A pesar de la deduplicación, Flatpak sí consume más espacio que las instalaciones de paquetes tradicionales porque:

  • Múltiples Versiones de Runtime: Podrías tener el runtime GNOME 48 y 49 instalados porque diferentes aplicaciones requieren diferentes versiones. Cada versión puede ser cientos de megabytes.
  • Dependencias Empaquetadas: Las aplicaciones aún empaquetan dependencias que no están en los runtimes. Una aplicación Electron, por ejemplo, podría empaquetar todo el framework Electron, lo cual puede ocupar mucho espacio.
  • Runtimes Sobrantes: Cuando desinstalas aplicaciones, sus runtimes podrían permanecer en tu sistema hasta que los limpies manualmente.


Gestionando el Almacenamiento de Flatpak

Verificar lo que Está Instalado

Ver qué está consumiendo espacio:

# Listar todos los Flatpaks instalados con sus tamaños
flatpak list --columns=name,application,size

# Listar solo aplicaciones (no runtimes)
flatpak list --app --columns=name,size

# Listar solo runtimes
flatpak list --runtime --columns=name,size

Eliminar Runtimes No Utilizados

Cuando desinstalas aplicaciones, sus runtimes pueden quedarse (elimínalos si no son necesarios):

# Eliminar runtimes y extensiones no utilizados
flatpak uninstall --unused

# Esto es seguro y solo elimina runtimes que no son usados por ninguna aplicación instalada

Mover a una Partición Diferente

Si tu partición raíz se está llenando, puedes instalar Flatpaks en tu partición home en su lugar:

# Agregar el repositorio de usuario
flatpak remote-add --user flathub https://flathub.org/repo/flathub.flatpakrepo

# Instalar aplicaciones con el flag --user
flatpak install --user flathub org.mozilla.firefox


¿Vale la Pena el Espacio?

Como la respuesta universal a muchas preguntas, depende…

Cuándo Flatpak Tiene Sentido:

  • Quieres las últimas versiones de las aplicaciones sin esperar las actualizaciones de la distribución.
  • Necesitas aplicaciones que no están disponibles en los repositorios de tu distro.
  • Valoras el sandboxing y el aislamiento de seguridad de los Flatpaks.

Cuándo los Paquetes Tradicionales Podrían Ser Mejores:

  • Tienes espacio de almacenamiento limitado.
  • Prefieres sistemas mínimos con control estricto sobre lo que está instalado.
  • Las aplicaciones que necesitas ya están disponibles y actualizadas en los repositorios de tu distro.


Reflexiones Finales

Personalmente uso un enfoque híbrido. Flatpak es mi opción predeterminada para la mayoría de aplicaciones de escritorio, ya que el sandboxing por sí solo lo hace valioso para cualquier cosa que toque internet o maneje archivos no confiables. Sin embargo, soy perezoso y no siento que valga la pena el problema para algunas aplicaciones que necesitan una integración más profunda del sistema que tienen dificultades con el aislamiento/permisos de Flatpak (que se pueden configurar para permitir acceso según sea necesario).

La sobrecarga de almacenamiento es real, sin embargo hoy en día, con SSD/HDDs baratos, el compromiso usualmente tiene sentido la mayor parte del tiempo. Esto sin embargo, depende de tu caso de uso (y paciencia).