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

Отличные новости в понедельник, %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 можно обходить ограничения родительского контроля.

Let’s block ads! (Why?)

Read More

Recent Posts

Роскомнадзор рекомендовал хостинг-провайдерам ограничить сбор данных с сайтов для иностранных ботов

Центр управления связью общего пользования (ЦМУ ССОП) Роскомнадзора рекомендовал компаниям из реестра провайдеров ограничить доступ поисковых ботов к информации на российских сайтах.…

21 час ago

Apple возобновила переговоры с OpenAI и Google для интеграции ИИ в iPhone

Apple возобновила переговоры с OpenAI о возможности внедрения ИИ-технологий в iOS 18, на основе данной операционной системы будут работать новые…

6 дней ago

Российская «дочка» Google подготовила 23 иска к крупнейшим игрокам рекламного рынка

Конкурсный управляющий российской «дочки» Google подготовил 23 иска к участникам рекламного рынка. Общая сумма исков составляет 16 млрд рублей –…

6 дней ago

Google завершил обновление основного алгоритма March 2024 Core Update

Google завершил обновление основного алгоритма March 2024 Core Update. Раскатка обновлений была завершена 19 апреля, но сообщил об этом поисковик…

6 дней ago

Нейросети будут писать тексты объявления за продавцов на Авито

У частных продавцов на Авито появилась возможность составлять текст объявлений с помощью нейросети. Новый функционал доступен в категории «Обувь, одежда,…

6 дней ago

Объявлены победители международной премии Workspace Digital Awards-2024

24 апреля 2024 года в Москве состоялась церемония вручения наград международного конкурса Workspace Digital Awards. В этом году участниками стали…

7 дней ago