Lanzamiento del sistema de paquetes independientes Flatpak 1.18.0

Después de un año y medio de desarrollo, se ha publicado una nueva rama estable de la herramienta Flatpak 1.18, que proporciona un sistema para crear paquetes autosuficientes, independientes de distribuciones específicas de Linux y ejecutados en un contenedor especial que aísla la aplicación del resto del sistema. El soporte para la ejecución de paquetes Flatpak está disponible para Fedora, CentOS, Debian, Arch Linux, Gentoo, Linux Mint, Alt Linux y Ubuntu. Los paquetes Flatpak se incluyen en el repositorio de Fedora y son compatibles con las aplicaciones de gestión de aplicaciones estándar de GNOME y KDE.

Novedades clave en la rama Flatpak 1.18:

  • Se ha implementado soporte para permisos condicionales, que permiten al solicitar permisos verificar la presencia de ciertas capacidades en el sistema o en runtime. Por ejemplo, al necesitar acceso a un dispositivo de entrada, en lugar de «—device=all», se puede solicitar el permiso «—device-if=all:!has-input-device —device=input», que proporcionará acceso solo a los dispositivos de entrada o revertirá a acceso a todos los dispositivos si la concesión selectiva de acceso no está soportada en runtime. De manera similar, se puede solicitar acceso a dispositivos USB («has-usb-device» y «has-usb-portal») o subsistemas compartidos.
  • Se ha autorizado el acceso al dispositivo /dev/ntsync para acceder a
    el módulo del núcleo NTSYNC, que implementa un conjunto de primitivas para la sincronización, utilizadas en el núcleo de Windows NT y que permiten mejorar significativamente el rendimiento de los juegos de Windows ejecutados con Wine.
  • Para la GPU Intel Xe se ha incluido soporte para la API VA-API para la aceleración de hardware en la decodificación de video.
  • Se ha implementado la posibilidad de acceder al dispositivo /dev/kfd (Kernel Fusion Driver) utilizando los permisos proporcionados para dispositivos DRI. El controlador kfd implementa una interfaz para la ejecución directa de cálculos en la GPU AMD desde aplicaciones que utilizan AMD ROCm, HIP y OpenCL.
  • Se ha añadido soporte para el uso de opciones de línea de comandos para redirigir el acceso a directorios en aplicaciones aisladas.
  • Se ha añadido soporte para el directorio «preinstall.d», que define una lista de aplicaciones Flatpak preinstaladas (para incluir aplicaciones Flatpak en el sistema operativo).
  • Se ha permitido la instalación directa de aplicaciones desde imágenes de contenedores en formato OCI, que pueden cargarse desde sus propios repositorios OCI y archivos locales.
  • Se ha añadido soporte para URI «flatpak+https://» en el comando «flatpak install —from».
  • Se ha añadido la opción «—clear-env» al comando «flatpak run» para limpiar las variables de entorno antes de ejecutar la aplicación.
  • Se ha proporcionado la posibilidad de exportar el directorio raíz del entorno del host a un entorno de aplicación aislado con acceso a través del directorio /run/host/root.
  • Se ha añadido la opción de salida del resultado de las ejecuciones de comandos en formato JSON.
  • Se ha reforzado el aislamiento del entorno de construcción: el comando «flatpak build» ahora no proporciona acceso al host por defecto.
  • Se ha añadido el comando «reinstall» para reinstalar dependencias (bundle).
  • La configuración de D-Bus por defecto se ha trasladado del directorio /etc a /usr.
  • Se ha reducido el tiempo de inicio al utilizar el intérprete de comandos fish.
  • Se ha añadido una función en libflatpak para obtener información sobre la fecha de creación de la configuración, lo que permite a aplicaciones como GNOME Software determinar que los datos almacenados en caché necesitan actualización.
  • Se ha eliminado la opción de construcción http_backend, utilizando la biblioteca libcurl para la carga a través de HTTP/HTTPS en lugar de libsoup2.
  • Por defecto, se ha habilitado el uso de secuencias de escape para indicar el progreso de la operación.
  • Se permite pasar permisos de acceso a dispositivos a entornos sandbox anidados creados a través de portales Flatpak.
  • Para aplicaciones distribuidas en forma de imágenes OCI, se ha implementado un mecanismo «extra-data», que por ejemplo, permite organizar la reproducción de video h.265 en paquetes Flatpak de Fedora Linux.
  • Se ha añadido soporte para la compresión de dependencias (OCI bundle) utilizando el algoritmo zstd, que comprime los datos de manera más eficiente. Por defecto, todavía se utiliza gzip para la compresión, garantizando la máxima compatibilidad.

Flatpak simplifica la distribución de programas que no están en los repositorios estándar de las distribuciones, al preparar un contenedor universal que libera a los desarrolladores de la necesidad de crear versiones separadas para cada distribución. Para los usuarios preocupados por la seguridad, Flatpak permite ejecutar aplicaciones dudosas dentro de un contenedor, proporcionando acceso selectivo solo a las funciones de red necesarias y a los archivos del usuario. Para los interesados en las novedades, Flatpak permite instalar las versiones de prueba y estables más recientes de las aplicaciones sin necesidad de realizar cambios en el sistema. Por ejemplo, los paquetes Flatpak están disponibles para LibreOffice, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Telegram Desktop, Android Studio, etc.

Para reducir el tamaño, solo se incluyen las dependencias específicas de la aplicación en el paquete. Las bibliotecas gráficas y del sistema básicas (GTK, Qt, bibliotecas de GNOME y KDE, etc.) se suministran como entornos runtime estándar que se pueden conectar. La principal diferencia entre Flatpak y Snap es que Snap utiliza componentes del entorno del sistema principal y aislamiento basado en la filtración de llamadas al sistema, mientras que Flatpak crea un contenedor separado del sistema y opera con grandes conjuntos de runtime, proporcionando como dependencias no paquetes, sino entornos estándar del sistema (por ejemplo, todas las bibliotecas necesarias para ejecutar aplicaciones de GNOME o KDE).

Además del entorno del sistema estándar (runtime), que se instala a través de un repositorio especial, se suministran dependencias adicionales (bundle) necesarias para la ejecución de la aplicación. En conjunto, "runtime" y "bundle" forman el contenido del contenedor, siendo que "runtime" se instala por separado y se vincula a varios contenedores, lo que permite evitar la duplicación de archivos del sistema comunes a los contenedores.

En un sistema se pueden instalar varios «runtime» diferentes (GNOME, KDE) o varias versiones de un mismo «runtime» (GNOME 50, GNOME 49). Un contenedor de aplicación como dependencia utiliza un enlace solo a un «runtime» específico, sin tener en cuenta los paquetes individuales que forman el «runtime» seleccionado. Todos los elementos faltantes se empaquetan directamente junto con la aplicación. Al crear un contenedor, el contenido del «runtime» se monta como la partición /usr, y el «bundle» se monta en el directorio /app.

La composición del «runtime» y los contenedores de aplicaciones se forma utilizando la tecnología OSTree, en la que la imagen se actualiza de manera atómica desde un repositorio similar a Git, permitiendo aplicar métodos de control de versiones a los componentes de la distribución (por ejemplo, se puede revertir rápidamente el sistema a un estado anterior). Los paquetes RPM se trasladan al repositorio OSTree mediante una capa llamada rpm-ostree.

La instalación selectiva y la actualización de paquetes dentro del entorno de trabajo no son compatibles: el sistema se actualiza no a nivel de componentes individuales, sino en su totalidad, cambiando de estado de manera atómica. Se proporcionan herramientas para la aplicación incremental de actualizaciones, evitando la necesidad de reemplazar completamente la imagen en cada actualización.

El entorno aislado que se forma no depende 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, además de no poder acceder directamente al hardware, excepto mediante la salida a través de DRI. La salida gráfica y la organización de la entrada se implementan utilizando el protocolo Wayland o a través del reenvío del socket X11. La interacción con el entorno externo se basa en un sistema de mensajería DBus y una API especial de Portals.

Se utiliza una capa de Bubblewrap para el aislamiento y tecnologías tradicionales de virtualización de contenedores en Linux, basadas en el uso de cgroups, espacios de nombres (namespaces), Seccomp y SELinux. Al crear un paquete, el aislamiento puede ser deshabilitado, lo que aprovechan los desarrolladores de algunos paquetes para obtener acceso completo al sistema de archivos y a todos los dispositivos del sistema.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster