Открыть сервис

Flatpak

Flatpak — это кроссплатформенная система управления пакетами (пакетный менеджер) и среда выполнения приложений, предназначенная для развёртывания, распространения и изоляции настольных приложений в операционных системах на базе ядра Linux. Flatpak позволяет разработчикам создавать универсальные пакеты, которые работают в изолированном окружении (песочнице) независимо от дистрибутива Linux и версий системных библиотек, что решает проблему зависимостей и фрагментации экосистемы Linux.

История

Проект Flatpak был основан в 2014 году разработчиками из компании Red Hat, в частности Александром Ларссоном, как преемник технологии xdg-app. Изначально проект назывался xdg-app, а в 2016 году был переименован в Flatpak. Первый стабильный релиз Flatpak 0.8.0 состоялся в мае 2016 года. Основной целью разработки было создание альтернативы традиционным системам управления пакетами (APT, DNF, Pacman), которые требуют адаптации пакетов под конкретный дистрибутив и версию библиотек. Flatpak, напротив, использует концепцию рантаймов (runtime) — предварительно собранных наборов библиотек, на которые ссылаются приложения.

В 2017—2018 годах Flatpak получил значительную поддержку со стороны сообщества и крупных дистрибутивов, включая Fedora, Ubuntu, Debian и Arch Linux. В 2019 году была запущена платформа Flathub — центральный репозиторий приложений Flatpak, который стал основным источником пакетов для пользователей. К 2025 году Flathub насчитывает тысячи приложений, включая такие популярные, как GIMP, LibreOffice, Firefox, Steam и многие другие.

Архитектура и принципы работы

Изоляция (песочница)

Основная особенность Flatpak — использование технологий изоляции Linux, таких как cgroups, namespaces, seccomp и Bubblewrap, для создания изолированного окружения для каждого приложения. Приложения Flatpak запускаются в отдельных пространствах имён (namespaces), что ограничивает их доступ к файловой системе, сети, процессам и другим ресурсам хостовой системы. Это повышает безопасность: даже если приложение скомпрометировано, злоумышленник не сможет получить доступ к данным других приложений или системе в целом.

Рантаймы и SDK

Flatpak использует концепцию рантаймов (runtime) — предварительно собранных наборов библиотек и инструментов, которые предоставляют приложению необходимое окружение. Различают два типа рантаймов:

  • Runtime — минимальный набор библиотек для запуска приложений (например, org.freedesktop.Platform).
  • SDK (Software Development Kit) — расширенный набор, включающий компиляторы, заголовочные файлы и инструменты для сборки приложений (например, org.freedesktop.Sdk).

Приложения Flatpak ссылаются на конкретный рантайм, который устанавливается отдельно и может быть обновлён независимо от приложения. Это позволяет разработчикам не беспокоиться о совместимости с разными версиями библиотек в дистрибутивах.

Формат пакета

Пакет Flatpak представляет собой образ файловой системы (обычно в формате OSTree), содержащий само приложение и его зависимости, но не включающий системные библиотеки, которые предоставляются рантаймом. Пакеты распространяются в виде файлов с расширением .flatpak или через репозитории, такие как Flathub. Установка пакета производится командой flatpak install, а запуск — flatpak run.

Классификация и типы пакетов

Flatpak поддерживает несколько типов пакетов, различающихся по способу распространения и уровню изоляции:

  • Приложения — основной тип пакетов, содержащий графические или консольные приложения. Они полностью изолированы от хостовой системы, за исключением явно разрешённых порталов (например, доступ к файлам через диалоговое окно).
  • Рантаймы — базовые наборы библиотек, на которые ссылаются приложения. Могут быть стабильными (LTS) или обновляемыми.
  • Расширения (extensions) — дополнительные компоненты, такие как плагины, кодеки или локализации, которые могут быть установлены поверх приложения или рантайма.
  • Порталы (portals) — механизмы взаимодействия с хостовой системой, позволяющие приложению получать доступ к файлам, устройствам, сети и другим ресурсам через системные диалоги, а не напрямую.

Применение и значение

Flatpak широко используется в экосистеме Linux для распространения настольных приложений, особенно в дистрибутивах, ориентированных на стабильность (например, Fedora, Linux Mint, Pop!_OS). Основные преимущества:

  • Универсальность: один пакет работает во всех дистрибутивах Linux, поддерживающих Flatpak.
  • Безопасность: изоляция снижает риск заражения системы вредоносным ПО.
  • Обновляемость: приложения и рантаймы обновляются независимо, что упрощает поддержку.
  • Простота для разработчиков: не требуется адаптация под разные дистрибутивы.

Flatpak часто сравнивают с альтернативными системами, такими как Snap (разрабатывается Canonical) и AppImage. В отличие от Snap, Flatpak использует централизованный репозиторий Flathub, но не требует монопольного магазина приложений. AppImage, в свою очередь, не требует установки, но не предоставляет изоляции и автоматических обновлений.

Критика и ограничения

Несмотря на популярность, Flatpak подвергается критике по нескольким причинам:

  • Размер пакетов: из-за необходимости загрузки рантаймов (например, org.freedesktop.Platform весит около 1 ГБ) начальная установка приложений может занимать много места и времени.
  • Дублирование зависимостей: разные приложения могут использовать разные версии рантаймов, что приводит к дублированию данных на диске.
  • Ограничения изоляции: некоторые приложения требуют доступа к системным ресурсам (например, к устройствам ввода или к определённым файлам), что может быть сложно настроить через порталы.
  • Интеграция с системой: приложения Flatpak могут не в полной мере интегрироваться с темой оформления, шрифтами и другими настройками рабочего стола, хотя это постепенно улучшается.

Интересные факты

  • Flatpak поддерживает архитектуры x86_64, ARM64, AArch64 и i686.
  • Проект использует формат OSTree для управления версиями пакетов, что позволяет откатывать обновления.
  • Flathub, основной репозиторий Flatpak, модерируется сообществом и не требует регистрации для загрузки приложений.
  • Flatpak может быть использован для распространения не только графических, но и консольных приложений, хотя это менее распространено.

Источники

  • Официальная документация Flatpak (flatpak.org)
  • Репозиторий Flathub (flathub.org)
  • Статья «Flatpak: A new way to distribute Linux applications» на LWN.net
  • Материалы конференций GUADEC и FOSDEM (2015–2020)
  • Руководство пользователя Fedora по Flatpak

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →