Flatpak (ранее известный как xdg-app)[5] — это утилита для развёртывания, управления пакетами и виртуализации[англ.] для Linux. Предоставляет собой песочницу, в которой пользователи могут запускать приложения без влияния на основную систему.[6][7][8] Приложения, использующие Flatpak, требуют дополнительных разрешений на использование дискового пространства.[9]
Описание
Для работы с Flatpak пакетам возможно использовать как Flathub (репозиторий разработчика), так и сторонние репозитории, что отличается от подхода Snappy.
Выполнение приложений происходит в изолированном контейнере.
Библиотеки приложений могут находиться в одном пакете вместе с приложением или же находиться в окружениях, общих для нескольких пакетов[10]
История
Автором Flatpak является Алекс Ларсон (англ. Alex Larsson), одним из мотиваторов стал klik.[11] Название произошло от соединения GNOME и klik, как это обычно происходило в GNOME-сообществе. Проект утилиты претерпел несколько изменений.
![]() |
Я игрался с системой образов приложений Klik, у которой были интересные идеи | I had played a bit with a application image system called Klik, which had some interesting ideas | ![]() | |
Алекс Ларсон[11]
|
![]() |
Название — это каламбур от старой схемы наименования в KDE и GNOME — первая буква и название, получилось Klik и Glick (хотя ни тот ни другой не являются зависимыми от среды рабочего стола). | The name is sort of a pun on the old KDE/Gnome first-letter naming scheme, although neither Klik or Glick are really desktop-specific. | ![]() | |
Алекс Ларсон[11]
|
Glick
Изначально идея зародилась в проекте Glick — фреймворк для упаковки (англ. bundling) приложений.[12][13][14] Он позиционировался как приложение, позволяющее разработчикам создавать самодостаточные пакеты для своих приложений. Первая публичная версия 0.1 была выпущена в 2007 году.[15] Позже был выпущен последний релиз 0.2, где удалось обойти ограничение fuse на одновременное выполнение 10 программ.[16]
Особенности реализации:
- для целевой системы не требуется дополнительная среда выполнения: пока fuse правильно работает — программа ничего не требует;
- приложение, установленное в комплекте, не должно быть перемещено, так как Glick использует трюк со ссылкой
/proc/self
, чтобы найти свои файлы на/proc/self/fd/1023
. Это значит, что разработчику не нужно менять приложение для работы, просто нужно выполнитьconfigure --prefix /proc/self/fd/1023
; - внутрь файла можно вставить значки и другие файлы, которые хранятся в виде отдельных секций ELF, поэтому их легко извлечь.
Glick2
Вскоре проект перерос в Glick2.[17] В 2011 году появилась первая запись в блоге GNOME о переосмыслении распространения запускаемых файлов, где и был представлен новый Glick2.[18][19] Когда программа запускается, она создаёт новое пространство имени точек монтирования[англ.] — это функция ядра Linux, позволяющая смотреть на списки монтирования; после этого файл монтируется при помощи fuse с уже известным префиксом, например, в /opt/bundle
— эта точка монтирования доступна только программе и её дочерним процессам. Далее запускается стартовый файл, который читает нужные данные и библиотеки из этой точки. С помощью другой функции ядра — разделяемых поддеревьев (англ. shared subtrees) — имеющееся пространство имён открывается в общий доступ в систему, например, появится возможность использовать USB носитель, вставленный после запуска программы. Если установить дополнительное ПО, то установка составит собой лишь перемещение в папку (иначе в списке программ она не появится), а также появится слежение за дубликатами при помощи сравнения хешей SHA-1.[20]
Преимущества в сравнении с другими системами пакетов:
- возможна лёгкая установка в виде перемещения файла приложения в папку
~/Apps
- приложение работает даже если в системных пакетах будут несовместимые изменения;
- приложение работает как на старых, так и на новых ОС — не нужно заботиться о системе;
- можно устанавливать сразу несколько версий приложения;
- достигается высокий уровень кросс-платформенности; однако, из-за того, что разработчик приложения не распространяет xserver или kernel, есть ограничения в системных вещах.
На основе Glick2 был создан фреймворк bundler, который повторял идеи первого.
xdg-app
В 2013 году в ядро Linux добавили нативную поддержку контейнеров — LXC.[21][22] На Hackfest2013 Алекс Ларсон опубликовал свои идеи насчёт будущего Flatpak.[23] Первые публичные работы начались в 2014 году,[24] а первый релиз состоялся в 2015 году.[25]
Flatpak
xdg-app с версии 0.6 стал именоваться Flatpak.[26]
Flatpak 0.8 имеет долгосрочную поддержку.[27][28]
Flatpak 1.0 была выпущена 20 августа 2018 года.[29][30]
1 июля 2017 года Valve добавила в SteamOS поддержку Flatpak.[31][32]
С сентября 2018 года поддерживается и Windows 10 при помощи WSL.[33]
Источник приложений
Flathub — магазин приложений для Flatpak. В нём присутствуют сборки GIMP, VS Code, Steam[34] и других популярных программ.[35] До некоторого времени приложения находились в репозитории приложений GNOME.[36]
Роберт Маккуин (Robert McQueen), руководитель GNOME Foundation, опубликовал (2023) план по развитию Флатхаба. Основная задача в плане — преобразование Флатхаба из сервиса сборки в каталог-магазин приложений.[37]
Проблемы безопасности
Команда исследователей создала сайт flatkill.org, на котором публикуются различные вопросы безопасности относительно Flatpak. Основные проблемы — наличие устаревшего ПО в Flathub и недоработки в песочнице.
См. также
Примечания
- ↑ https://flatpak.org/about/
- ↑ 1.16.0 — 2025.
- ↑ The flatpak Open Source Project on Open Hub: Languages Page — 2006.
- ↑ https://github.com/flatpak/flatpak/blob/master/COPYING
- ↑ Frequently Asked Questions # Is Flatpak the same as xdg-app? (англ.). Flatpak FAQ. Дата обращения: 17 октября 2018. Архивировано 20 сентября 2018 года.
- ↑ Larsson, Alexander. First fully sandboxed Linux desktop app (англ.). Блог GNOME (17 февраля 2015). Дата обращения: 17 октября 2018. Архивировано 29 августа 2018 года.
- ↑ Представлено первое полностью изолированное приложение для GNOME. OpenNET. 17 февраля 2015. Архивировано 28 января 2018. Дата обращения: 17 октября 2018.
- ↑ Larsson, Alexander. Using bubblewrap in xdg-app (англ.). Блог GNOME (29 апреля 2016). Дата обращения: 17 октября 2018. Архивировано 26 августа 2018 года.
- ↑ Willis, Nathan. Working with xdg-app application bundles (англ.). LWN.net (12 августа 2015). Дата обращения: 17 октября 2018. Архивировано 23 августа 2018 года.
- ↑ Обзор snap vs flatpack vs appimage . Losst (9 июля 2016). Дата обращения: 22 марта 2020. Архивировано 22 марта 2020 года.
- ↑ 1 2 3 Larsson, Alexander (20 июня 2018). Flatpak – a history. Блог GNOME (англ.). Архивировано 20 сентября 2018. Дата обращения: 17 октября 2018.
- ↑ About Flatpak (англ.). Сайт Flatpak. Дата обращения: 17 октября 2018. Архивировано 17 октября 2018 года.
- ↑ Glick — a runtime-less application bundle system for linux (англ.). Страница Glick в проекте GNOME. Дата обращения: 17 октября 2018. Архивировано 5 июля 2018 года.
- ↑ Paul, Ryan (24 августа 2007). Glick brings better standalone application bundles to Linux. Ars Technica (англ.). Архивировано 20 марта 2014. Дата обращения: 17 октября 2018.
- ↑ Larsson, Alexander (21 августа 2007). Glick 0.1 released. Блог GNOME (англ.). Архивировано 22 июля 2018. Дата обращения: 17 октября 2018.
- ↑ Larsson, Alexander (23 августа 2007). Glick 0.2 released. Блог GNOME (англ.). Архивировано 27 августа 2018. Дата обращения: 17 октября 2018.
- ↑ glick2 — a application bundle system for linux (англ.). Дата обращения: 17 октября 2018. Архивировано 5 сентября 2018 года.
- ↑ Larsson, Alexander (30 сентября 2011). Rethinking the Linux distibution. Блог GNOME (англ.). Архивировано 9 апреля 2016. Дата обращения: 17 октября 2018.
- ↑ Intro to bundles (прим.: работа бандлов на видео) на YouTube
- ↑ Larsson, Alexander (12 октября 2011). Glick2 code availible. Блог GNOME (англ.). Архивировано 16 марта 2017. Дата обращения: 17 октября 2018.
- ↑ LXC 1.0.0 release announcement. Новости LXC (англ.). 20 февраля 2014. Архивировано 2 июня 2017. Дата обращения: 17 октября 2018.
- ↑ Релиз LXC 1.0, системы управления изолированными контейнерами Linux. OpenNET. 21 февраля 2014. Архивировано 9 декабря 2017. Дата обращения: 17 октября 2018.
- ↑ Larsson, Alexander (1 февраля 2013). Developer Hackfest status. Блог GNOME (англ.). Архивировано 27 августа 2016. Дата обращения: 17 октября 2018.
- ↑ Initial version (англ.). Репозиторий alexlarsson на GitHub (17 декабря 2014). Дата обращения: 17 октября 2018. Архивировано 17 октября 2018 года.
- ↑ Release 0.1 (англ.). Репозиторий alexlarsson на GitHub (23 марта 2015). Дата обращения: 17 октября 2018. Архивировано 17 октября 2018 года.
- ↑ Announcing Flatpak – Next Generation Linux Applications. Пресс-релизы Flatpak (англ.). 21 июня 2016. Архивировано 26 августа 2018. Дата обращения: 17 октября 2018.
- ↑ Alex, Larsson (22 декабря 2016). A stable base for Flatpak: 0.8. Блог GNOME (англ.). Архивировано 5 сентября 2018. Дата обращения: 17 октября 2018.
- ↑ Сформирована стабильная ветка системы самодостаточных пакетов Flatpak 0.8.0. OpenNET. 23 декабря 2016. Архивировано 6 февраля 2018. Дата обращения: 17 октября 2018.
- ↑ Flatpak 1.0 Released, Ready for Prime Time. Пресс-релизы Flatpak (англ.). 20 августа 2018. Архивировано 6 октября 2018. Дата обращения: 17 октября 2018.
- ↑ Релиз системы самодостаточных пакетов Flatpak 1.0. OpenNET. 20 августа 2018. Архивировано 17 октября 2018. Дата обращения: 17 октября 2018.
- ↑ jvert (1 апреля 2017). SteamOS update 2.121 released to brewmaster. Steam Universe (англ.). Архивировано 3 ноября 2017. Дата обращения: 17 октября 2018.
- ↑ Обновление SteamOS 2.121 с поддержкой Flatpak. OpenNET. 26 июля 2017. Архивировано 8 сентября 2018. Дата обращения: 17 октября 2018.
- ↑ Larsson, Alexander (17 сентября 2018). Flatpak on windows. Блог GNOME (англ.). Архивировано 17 сентября 2018. Дата обращения: 17 октября 2018.
- ↑ Sneddon, Joey (18 июня 2017). Steam is Now Available as a Flatpak, Here's How To Install it on Ubuntu. OMG! Ubuntu! (англ.). Архивировано 16 мая 2018. Дата обращения: 17 октября 2018.
- ↑ Popular Apps (англ.). Дата обращения: 17 октября 2018. Архивировано 21 декабря 2019 года.
- ↑ Larsson, Alexander (13 ноября 2017). Gnome apps migrated to flathub. Блог GNOME (англ.). Архивировано 20 февраля 2018. Дата обращения: 17 октября 2018.
- ↑ План продвижения Flathub в качестве независимого сервиса распространения приложений . Дата обращения: 30 июля 2024. Архивировано 30 июля 2024 года.