Релиз системы самодостаточных пакетов Flatpak 1.10.0
Опубликована новая стабильная ветка инструментария Flatpak 1.10, который предоставляет систему для сборки самодостаточных пакетов, не привязанных к конкретным дистрибутивам Linux и выполняемых в специальном контейнере, изолирующем приложение от остальной системы. Поддержка выполнения Flatpak-пакетов обеспечена для Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux и Ubuntu. Пакеты с Flatpak включены в репозиторий Fedora и поддерживаются в штатной программе управления приложениями GNOME.
Ключевые новшества в ветке Flatpak 1.10:
Реализована поддержка нового формата репозитория, позволяющего ускорить доставку обновлений и сократить размер загружаемых данных. Репозиторий основывается на технологии OSTree, в которой для идентификации содержимого используется индексный файл, который обновляется при каждом изменении. Размер индексного файла зависит от числа пакетов и поддерживаемых архитектур. Новый формат репозитория подразумевает разделение индексных файлов для разных архитектур, а также применение delta-обновлений для загрузки только частей индекса, изменившихся с прошлой версии репозитория. Применение инкрементальных обновлений позволило в 100 раз сократить трафик и сняло ограничения по поддержке во Flathub дополнительных архитектур. Например, во Flathub общий размер индекса в настоящее время составляет 6.6 МБ (1.8 МБ сжатый), варианта для архитектуры x86-64 - 2.7 МБ (554 КБ сжатый), а при обновлении с прошлой версии требуется загрузка всего 20 КБ.
Добавлена новая команда "flatpak pin" для закрепления runtime (не будет удаляться при отсутствии использующих его приложений). По умолчанию закрепление применяется для runtime, установленных явно, а не автоматически загруженных в числе зависимостей при установке приложения.
При общем обновлении ("flatpak update") или удалении отдельных приложений обеспечено автоматическое удаление неиспользуемых runtime, которые не закреплены и имеют истекшее время жизни.
Улучшено определение похожих путей приложений, например, "/org/gnome/sound-juicer" теперь сопоставляется с "org.gnome.SoundJuicer".
Добавлена поддержка нового стандарта на оформление файлов в os-release в контейнерах.
Добавлен профиль для tcsh.
При поиске зависимостей репозиторий устанавливаемого приложения теперь имеет более высокий приоритет, чем другие репозитории.
Повышена эффективность кэширования индекса репозитория в памяти.
Запрещено указание "--filesystem=/".
Добавлены новые API: flatpak_installation_list_pinned_refs, flatpak_transaction_set_disable_auto_pin, flatpak_transaction_set_include_unused_uninstall_ops, flatpak_transaction_operation_get_subpaths, flatpak_transaction_operation_get_requires_authentication.
Обеспечена совместимость с находящимся в разработке GCC 11.
Улучшено определение сокетов PulseAudio в не типовых конфигурациях.
В sandbox-окружениях, в которых разрешён доступ к сети, открыт доступ к сокетам systemd-resolved, а также разрешено выполнение команд "--unset-env" и "--env=FOO=" для удаления или присвоения пустого значения переменным окружения.
При обновлении теперь вначале устанавливается новая версия приложения и только потом удаляется старая, т.е. сбой при установке теперь не приводит к пропаданию приложения.
Пользователю root разрешено обходить ограничения родительского контроля.
Напомним, что разработчикам приложений Flatpak даёт возможность упростить распространение своих программ, не входящих в штатные репозитории дистрибутивов за счет подготовки одного универсального контейнера без формирования отдельных сборок для каждого дистрибутива. Пользователям, заботящимся о безопасности, Flatpak позволяет выполнить вызывающее сомнение приложение в контейнере, предоставив доступ только к сетевым функциям и файлам пользователя, связанным с приложением. Пользователям, интересующимся новинками, Flatpak позволяет установить самые свежие тестовые и стабильные выпуски приложений без необходимости внесения изменений в систему. Например, в настоящее время Flatpak-пакеты уже собираются для LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio и т.д.
Для уменьшения размера пакета он включает лишь специфичные для приложения зависимости, а базовые системные и графические библиотеки (GTK, Qt, библиотеки GNOME и KDE и т.п.) оформлены в виде подключаемых типовых runtime-окружений. Ключевое отличие Flatpak от Snap заключается в том, что Snap использует компоненты окружения основной системы и изоляцию на основе фильтрации системных вызовов, в то время как Flatpak создаёт отдельный от системы контейнер и оперирует крупными runtime-наборами, предоставляя в качестве зависимостей не пакеты, а типовые системные окружения (например, все библиотеки, необходимые для работы программ GNOME или KDE).
Помимо типового системного окружения (runtime), устанавливаемого через специальный репозиторий, поставляются дополнительные зависимости (bundle), требуемые для работы приложения. В сумме runtime и bundle образуют начинку контейнера, при том, что runtime устанавливается отдельно и привязывается сразу к нескольким контейнерам, что позволяет обойтись без дублирования общих для контейнеров системных файлов. В одной системе может быть установлено несколько разных runtime (GNOME, KDE) или несколько версий одного runtime (GNOME 3.36, GNOME 3.38). Контейнер с приложением в качестве зависимости использует привязку только к определённому runtime, без учёта отдельных пакетов, из которых состоит runtime. Все недостающие элементы упаковываются непосредственно вместе с приложением. При формировании контейнера содержимое runtime монтируется как раздел /usr, а bundle монтируется в директорию /app.
Начинка runtime и контейнеров приложений формируется с использованием технологии OSTree, при которой образ атомарно обновляется из Git-подобного хранилища, позволяющего применять методы версионного контроля к компонентам дистрибутива (например, можно быстро откатить систему к прошлому состоянию). RPM-пакеты транслируются в репозиторий OSTree при помощи специальной прослойки rpm-ostree. Отдельная установка и обновление пакетов внутри рабочего окружения не поддерживается, система обновляется не на уровне отдельных компонентов, а целиком, атомарно меняя своё состояние. Предоставляются средства для инкрементального применения обновлений, избавляющие от необходимости полной замены образа при каждом обновлении.
Формируемое изолированное окружение полностью независимо от используемого дистрибутива и при надлежащих настройках пакета не имеет доступа к файлам и процессам пользователя или основной системы, не может напрямую обращаться к оборудованию, за исключением вывода через DRI, и сетевой подсистеме. Вывод графики и организация ввода реализованы при помощи протокола Wayland или через проброс сокета X11. Взаимодействие с внешней средой построено на основе системы обмена сообщениями DBus и специального API Portals.
Для изоляции используется прослойка Bubblewrap и традиционные для Linux технологии контейнерной виртуализации, основанные на использовании cgroups, пространств имён (namespaces), Seccomp и SELinux. Для вывода звука применяется PulseAudio. При этом изоляция может быть отключена, чем пользуются разработчики многих популярных пакетов для получения полного доступа к ФС и всем устройствам в системе.
https://www.opennet.ru/opennews/art.shtml?num=54412
Опубликована новая стабильная ветка инструментария Flatpak 1.10, который предоставляет систему для сборки самодостаточных пакетов, не привязанных к конкретным дистрибутивам Linux и выполняемых в специальном контейнере, изолирующем приложение от остальной системы. Поддержка выполнения Flatpak-пакетов обеспечена для Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux и Ubuntu. Пакеты с Flatpak включены в репозиторий Fedora и поддерживаются в штатной программе управления приложениями GNOME.
Ключевые новшества в ветке Flatpak 1.10:
Реализована поддержка нового формата репозитория, позволяющего ускорить доставку обновлений и сократить размер загружаемых данных. Репозиторий основывается на технологии OSTree, в которой для идентификации содержимого используется индексный файл, который обновляется при каждом изменении. Размер индексного файла зависит от числа пакетов и поддерживаемых архитектур. Новый формат репозитория подразумевает разделение индексных файлов для разных архитектур, а также применение delta-обновлений для загрузки только частей индекса, изменившихся с прошлой версии репозитория. Применение инкрементальных обновлений позволило в 100 раз сократить трафик и сняло ограничения по поддержке во Flathub дополнительных архитектур. Например, во Flathub общий размер индекса в настоящее время составляет 6.6 МБ (1.8 МБ сжатый), варианта для архитектуры x86-64 - 2.7 МБ (554 КБ сжатый), а при обновлении с прошлой версии требуется загрузка всего 20 КБ.
Добавлена новая команда "flatpak pin" для закрепления runtime (не будет удаляться при отсутствии использующих его приложений). По умолчанию закрепление применяется для runtime, установленных явно, а не автоматически загруженных в числе зависимостей при установке приложения.
При общем обновлении ("flatpak update") или удалении отдельных приложений обеспечено автоматическое удаление неиспользуемых runtime, которые не закреплены и имеют истекшее время жизни.
Улучшено определение похожих путей приложений, например, "/org/gnome/sound-juicer" теперь сопоставляется с "org.gnome.SoundJuicer".
Добавлена поддержка нового стандарта на оформление файлов в os-release в контейнерах.
Добавлен профиль для tcsh.
При поиске зависимостей репозиторий устанавливаемого приложения теперь имеет более высокий приоритет, чем другие репозитории.
Повышена эффективность кэширования индекса репозитория в памяти.
Запрещено указание "--filesystem=/".
Добавлены новые API: flatpak_installation_list_pinned_refs, flatpak_transaction_set_disable_auto_pin, flatpak_transaction_set_include_unused_uninstall_ops, flatpak_transaction_operation_get_subpaths, flatpak_transaction_operation_get_requires_authentication.
Обеспечена совместимость с находящимся в разработке GCC 11.
Улучшено определение сокетов PulseAudio в не типовых конфигурациях.
В sandbox-окружениях, в которых разрешён доступ к сети, открыт доступ к сокетам systemd-resolved, а также разрешено выполнение команд "--unset-env" и "--env=FOO=" для удаления или присвоения пустого значения переменным окружения.
При обновлении теперь вначале устанавливается новая версия приложения и только потом удаляется старая, т.е. сбой при установке теперь не приводит к пропаданию приложения.
Пользователю root разрешено обходить ограничения родительского контроля.
Напомним, что разработчикам приложений Flatpak даёт возможность упростить распространение своих программ, не входящих в штатные репозитории дистрибутивов за счет подготовки одного универсального контейнера без формирования отдельных сборок для каждого дистрибутива. Пользователям, заботящимся о безопасности, Flatpak позволяет выполнить вызывающее сомнение приложение в контейнере, предоставив доступ только к сетевым функциям и файлам пользователя, связанным с приложением. Пользователям, интересующимся новинками, Flatpak позволяет установить самые свежие тестовые и стабильные выпуски приложений без необходимости внесения изменений в систему. Например, в настоящее время Flatpak-пакеты уже собираются для LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio и т.д.
Для уменьшения размера пакета он включает лишь специфичные для приложения зависимости, а базовые системные и графические библиотеки (GTK, Qt, библиотеки GNOME и KDE и т.п.) оформлены в виде подключаемых типовых runtime-окружений. Ключевое отличие Flatpak от Snap заключается в том, что Snap использует компоненты окружения основной системы и изоляцию на основе фильтрации системных вызовов, в то время как Flatpak создаёт отдельный от системы контейнер и оперирует крупными runtime-наборами, предоставляя в качестве зависимостей не пакеты, а типовые системные окружения (например, все библиотеки, необходимые для работы программ GNOME или KDE).
Помимо типового системного окружения (runtime), устанавливаемого через специальный репозиторий, поставляются дополнительные зависимости (bundle), требуемые для работы приложения. В сумме runtime и bundle образуют начинку контейнера, при том, что runtime устанавливается отдельно и привязывается сразу к нескольким контейнерам, что позволяет обойтись без дублирования общих для контейнеров системных файлов. В одной системе может быть установлено несколько разных runtime (GNOME, KDE) или несколько версий одного runtime (GNOME 3.36, GNOME 3.38). Контейнер с приложением в качестве зависимости использует привязку только к определённому runtime, без учёта отдельных пакетов, из которых состоит runtime. Все недостающие элементы упаковываются непосредственно вместе с приложением. При формировании контейнера содержимое runtime монтируется как раздел /usr, а bundle монтируется в директорию /app.
Начинка runtime и контейнеров приложений формируется с использованием технологии OSTree, при которой образ атомарно обновляется из Git-подобного хранилища, позволяющего применять методы версионного контроля к компонентам дистрибутива (например, можно быстро откатить систему к прошлому состоянию). RPM-пакеты транслируются в репозиторий OSTree при помощи специальной прослойки rpm-ostree. Отдельная установка и обновление пакетов внутри рабочего окружения не поддерживается, система обновляется не на уровне отдельных компонентов, а целиком, атомарно меняя своё состояние. Предоставляются средства для инкрементального применения обновлений, избавляющие от необходимости полной замены образа при каждом обновлении.
Формируемое изолированное окружение полностью независимо от используемого дистрибутива и при надлежащих настройках пакета не имеет доступа к файлам и процессам пользователя или основной системы, не может напрямую обращаться к оборудованию, за исключением вывода через DRI, и сетевой подсистеме. Вывод графики и организация ввода реализованы при помощи протокола Wayland или через проброс сокета X11. Взаимодействие с внешней средой построено на основе системы обмена сообщениями DBus и специального API Portals.
Для изоляции используется прослойка Bubblewrap и традиционные для Linux технологии контейнерной виртуализации, основанные на использовании cgroups, пространств имён (namespaces), Seccomp и SELinux. Для вывода звука применяется PulseAudio. При этом изоляция может быть отключена, чем пользуются разработчики многих популярных пакетов для получения полного доступа к ФС и всем устройствам в системе.
https://www.opennet.ru/opennews/art.shtml?num=54412