Опубликован стабильный релиз самодостаточных пакетов Flatpak 1.10.0

a2d6e28d87d1d5eb7e48f267562fbb65.jpg

Отличные новости в понедельник, %username%. На днях была опубликована стабильная ветка инструментария Flatpak 1.10. Она предназначена для сборки самодостаточных пакетов, которые не привязаны к конкретным дистрибутивам Linux и выполняются в специальном контейнере, изолирующем приложение от системы.

Flatpack-пакеты гарантированно работают для Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux и Ubuntu. Они также входят в репозиторий Fedora и поддерживаются штатным софтом управления приложениями GNOME. Под катом — подробнее о новинке и ее возможностях.

Что такое Flatpak?


Этот инструментарий дает возможность разработчикам упростить распространение собственных программ, которые не входят в штатные репозитории дистрибутивов. Как это реализовано? Готовится один универсальный контейнер без формирования отдельных сборок для каждого дистрибутива.

Инструментарий обеспечивает и высокий уровень информационной безопасности, позволяя выполнить сомнительное приложение в изолированном контейнере. В этом случае доступ предоставляется лишь для сетевых функций и файлов пользователя, которые связаны с приложением. Плюс ко всему, с Flatpak можно устанавливать самые свежие выпуски приложений без необходимости вносить изменения в систему. Так, Flatpak-пакеты готовятся для LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio и десятков других приложений.

Чтобы снизить размер пакета, разработчики включили лишь специфичные для приложения зависимости. А вот все основные библиотеки оформлены в виде подключаемых runtime-приложений. У Flatpack есть ключевое отличие от Snap — последний использует компоненты окружения системы и изоляцию на основе фильтрации системных вызовов. А вот Flatpack создает отдельный от системы контейнер, оперируя крупными runtime-наборами, так что в качестве зависимостей предоставляются не пакеты, а типовые системные окружения. Это могут быть любые библиотеки, которые нужны для работы программ GNOME/KDE.

Что касается типового системного окружения, то, кроме runtime, устанавливаются еще и дополнительные зависимости, которые нужны для корректной работы приложения. Основное системное окружение и эти зависимости образуют начинку контейнера. Соответственно, runtime устанавливается отдельно и привязывается сразу к нескольким контейнерам. Это дает возможность обойтись без дублирования общих для контейнеров системных файлов.

В одной системе может быть установлено несколько различных runtime или несколько версий одного runtime. Контейнер с приложением в качестве зависимости использует привязку к определенному runtime без учета отдельных пакетов, из которых состоит runtime. Недостающие элементы упаковываются вместе с приложением. При формировании контейнера содержимое runtime монтируется как раздел /usr, а bundle монтируется в директорию /app.

Начинка runtime и контейнеров приложений формируется с использованием технологии OSTree. В этом случае образ обновляется из Git-подобного хранилища. Это сделано для того, чтобы можно было применять методы версионного контроля к компонентам дистрибутива. Например, пользователь может откатить систему к предыдущему состоянию. Стоит выделить и то, что RPM-пакеты транслируются в репозиторий OSTree при помощи специальной прослойки rpm-ostree.

Отдельная установка и обновление пакетов внутри рабочего окружения не поддерживается, так что система обновляется целиком, а не на уровне отдельных компонентов. Есть и средства для инкрементального применения обновлений, что избавляет от необходимости полной замены образа при каждом обновлении.

Изолированное окружение не зависит от используемого дистрибутива. Так что при соответствующих настройках пакета у окружения нет доступа к файлам и процессам пользователя или основной системы. Также окружение не может напрямую обращаться к оборудованию и сетевой подсистеме. Для вывода графики и ввода применяется протокол Wayland и проброс сокета X11. Взаимодействие с внешней средой построено на основе системы обмена сообщениями DBus и специального API Portals.

Для изоляции используется прослойка Bubblewrap и стандартные технологии контейнерной виртуализации. Их основа — cgroups, пространства имен (namespaces), Seccomp и SELinux. Звук выводится при помощи PulseAudio. Изоляция может быть и отключена, если это необходимо.

Что нового?


  • Добавлена поддержка нового формата репозитория, который дает возможность ускорить доставку объявлений, сократив размер загружаемых данных. Этот репозиторий основывается на технологии OSTree. В ней для идентификации содержимого используется индексный файл, обновляющийся при каждом изменении. Его размер напрямую зависит как от количества пакетов, так и от числа поддерживаемых архитектур. В новой версии применили инкрементальные обновления, что, по словам разработчиков, в 100 раз сократило трафик. Кроме того, теперь во Flatpack нет дополнительных архитектур. Так, общий размер индекса сейчас составляет 6.6 МБ (1.8 МБ сжатый), вариант для архитектуры x86–64 — 2.7 МБ (554 КБ сжатый). При обновлении с прошлой версии потребуется загрузка всего 20 КБ.
  • Появилась команда «flatpak pin» для закрепления runtime. По умолчанию закрепление применяется для runtime, установленных явно, а не загруженных автоматически.
  • При общем обновлении или удалении отдельных приложений неиспользуемые runtime удаляются автоматически (если они не закреплены и имеют истекшее время жизни).
  • Определение похожих путей приложений, например,»/org/gnome/sound-juicer», сопоставляется с «org.gnome.SoundJuicer».
  • Добавлена поддержка нового стандарта на оформление файлов в os-release в контейнерах.
  • Добавлен профиль для командной оболочки tcsh.
  • В ходе поиска зависимостей репозиторий устанавливаемого приложения теперь имеет более высокий приоритет, чем другие репозитории.
  • Увеличена эффективность кэширования индекса репозитория в памяти.
  • Добавлено несколько новых 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 в нетиповых конфигурациях.
  • Теперь при обновлении в самом начале устанавливается новая версия приложения, а затем удаляется старая. Соответственно, если что-то идет не так, то приложение не пропадает.
  • Пользователю root можно обходить ограничения родительского контроля.

1hdqmj1bvguax5hnugdz0ci_jbw.jpeg

© Habrahabr.ru