nueva rama estable de la herramienta , que ofrece un sistema para construir paquetes autosuficientes, no vinculados a distribuciones específicas de Linux y ejecutados en un contenedor especial que aísla la aplicación del resto del sistema. La compatibilidad para la ejecución de paquetes Flatpak está garantizada para Arch Linux, , Debian, Fedora, Gentoo, Mageia, Linux Mint y Ubuntu. Los paquetes Flatpak se incluyen en el repositorio de Fedora y son soportados por la aplicación de gestión de paquetes GNOME.
Mejoras clave en la rama Flatpak 1.4:
- Se ha cambiado la organización de la configuración de los parámetros de los repositorios externos. En el directorio /etc/flatpak/remotes.d, en lugar de archivos *.conf con configuraciones, ahora se utilizan archivos normales «.flatpakrepo», que se importan automáticamente al primer uso de flatpak. Estos archivos se pueden editar y eliminar libremente, al igual que los repositorios añadidos manualmente;
- Se ha reorganizado significativamente la instalación de paquetes disponibles para todo el sistema. En versiones anteriores, primero se instalaba el paquete en un directorio temporal perteneciente al usuario, y luego se activaba un proceso system-helper para importar al sistema desde este directorio. Este enfoque conducía a un gran consumo de recursos de disco, entrada/salida innecesaria y posibles problemas de seguridad. En la nueva versión, se utiliza un nuevo sistema de archivos FUSE para la instalación de paquetes del sistema, en el que el usuario puede escribir datos, pero después de finalizar la escritura, el acceso a los archivos grabados se bloquea para el usuario. Este nuevo enfoque implica la necesidad de crear un usuario separado para flatpak (por defecto «flatpak») y modificar las reglas de SELinux;
- Se ha añadido la posibilidad de definir en el sistema cliente filtros para repositorios externos. Con los filtros, se pueden restringir las aplicaciones visibles en el repositorio, utilizando un modelo de lista blanca y negra;
- Se ha añadido una API de biblioteca para agregar repositorios externos desde archivos flatpakref;
- Se ha añadido un perfil seccomp para Docker, que permite ejecutar flatpak dentro de contenedores;
- Se ha mejorado la capacidad de instalación desde múltiples fuentes P2P (a través de unidades USB o por red local);
- En el comando «flatpak remote-ls» se ha implementado un filtrado automático de aplicaciones cuyo soporte ha finalizado;
- En «flatpak remote-ls» y «flatpak remote-info» se ha implementado la opción «—cached» para proporcionar información basada en datos locales en caché;
- Se ha agregado la posibilidad de especificar la versión de expiración del paquete, después de la cual se mostrará una oferta para migrar a una nueva rama;
- Se ha añadido la opción «—socket=pcsc» para acceder a las tarjetas inteligentes;
- Se ha implementado el soporte para sistemas que cuentan con múltiples tarjetas gráficas NVIDIA;
- Se ha realizado la compatibilidad para el entorno sandbox dconf;
- Se han añadido las opciones «—no-update-[summary,appstream]» y «—static-delta-ignore-ref=PATTERN» al comando build-update-repo;
- Se ha incrementado significativamente la velocidad de regeneración de ramas appstream para grandes repositorios.
Recordemos que Flatpak permite a los desarrolladores de aplicaciones simplificar la distribución de sus programas, que no forman parte de los repositorios oficiales de las distribuciones, gracias a un único contenedor universal sin necesidad de crear paquetes separados para cada distribución. Para los usuarios preocupados por la seguridad, Flatpak permite ejecutar aplicaciones potencialmente dudosas en un contenedor, proporcionando acceso solo a las funciones de red y archivos del usuario relacionados con la aplicación. Para los usuarios interesados en novedades, Flatpak permite instalar las versiones más recientes y estables de las aplicaciones, sin necesidad de hacer cambios en el sistema. Por ejemplo, actualmente ya hay paquetes Flatpak para LibreOffice, Firefox, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio, etc.
Para reducir el tamaño del paquete, este solo incluye las dependencias específicas de la aplicación, mientras que las bibliotecas gráficas y del sistema base (Gtk+, Qt, bibliotecas GNOME y KDE, etc.) están estructuradas como entornos de ejecución estándar. La principal diferencia entre Flatpak y Snap es que Snap utiliza componentes del entorno del sistema base y el aislamiento basado en la filtración de llamadas del sistema, mientras que Flatpak crea un contenedor separado del sistema y opera con grandes conjuntos de runtime, proporcionando como dependencias no paquetes, sino entornos de sistema estándar (por ejemplo, todas las bibliotecas necesarias para el funcionamiento de programas GNOME o KDE).
Además del entorno de sistema típico (runtime) que se instala a través de un especial , se suministran dependencias adicionales (bundle) necesarias para el funcionamiento de la aplicación. En conjunto, el runtime y el bundle forman el contenido del contenedor, dado que el runtime se instala por separado y se vincula a múltiples contenedores, lo que permite evitar la duplicación de los archivos de sistema que son comunes a los contenedores. En un sistema pueden instalarse diferentes runtimes (GNOME, KDE) o varias versiones de un mismo runtime (GNOME 3.26, GNOME 3.28). Un contenedor con una aplicación como dependencia utiliza solo un runtime específico, sin tener en cuenta los paquetes individuales que componen el runtime. Todos los elementos faltantes se empaquetan directamente con la aplicación. Al formar el contenedor, el contenido del runtime se monta como la partición /usr, y el bundle se monta en el directorio /app.
El contenido de los runtimes y contenedores de aplicaciones se forma utilizando la tecnología , mediante la cual la imagen se actualiza de manera atómica desde un repositorio similar a Git, lo que permite aplicar métodos de control de versiones a los componentes de la distribución (por ejemplo, se puede restablecer el sistema a un estado anterior rápidamente). Los paquetes RPM se transmiten al repositorio OSTree mediante una capa especial . La instalación y actualización de paquetes dentro del entorno de trabajo no es compatible, el sistema se actualiza no a nivel de componentes individuales, sino en su conjunto, cambiando atómicamente su estado. Se proporcionan herramientas para aplicar actualizaciones de manera incremental, lo que elimina la necesidad de reemplazar completamente la imagen en cada actualización.
El entorno aislado creado es totalmente independiente de la distribución utilizada y, con la configuración adecuada del paquete, no tiene acceso a los archivos y procesos del usuario o del sistema principal, no puede acceder directamente al hardware, excepto a través de la salida mediante DRI y el subsistema de red. Salida de gráficos y organización de entrada. se realizan mediante el protocolo Wayland o a través de la redirección de socket X11. La interacción con el entorno externo se basa en un sistema de mensajería DBus y una API especial de Portals. Para la aislamiento una capa y las tecnologías tradicionales de virtualización de contenedores en Linux, basadas en el uso de cgroups, espacios de nombres (namespaces), Seccomp y SELinux. Para la salida de sonido se utiliza PulseAudio.
Fuente: opennet.ru
