Flatpak

Flatpak (ранее известный как xdg-app)[5] — это утилита для развёртывания, управления пакетами и виртуализации для Linux. Предоставляет собой песочницу, в которой пользователи могут запускать приложения без влияния на основную систему.[6][7][8] Приложения, использующие Flatpak, требуют дополнительных разрешений на использование дискового пространства.[9]

Общие сведения

Описание

Для работы с Flatpak пакетам возможно использовать как Flathub (репозиторий разработчика), так и сторонние репозитории, что отличается от подхода Snappy.

Выполнение приложений происходит в изолированном контейнере.

Библиотеки приложений могут находиться в одном пакете вместе с приложением или же находиться в окружениях, общих для нескольких пакетов[10]

История

Автором Flatpak является Алекс Ларсон (англ. Alex Larsson), одним из мотиваторов стал klik.[11] Название произошло от соединения GNOME и klik, как это обычно происходило в GNOME-сообществе. Проект утилиты претерпел несколько изменений.

Aquote1.png Я игрался с системой образов приложений Klik, у которой были интересные идеи I had played a bit with a application image system called Klik, which had some interesting ideas Aquote2.png
Алекс Ларсон[11]
Aquote1.png Название — это каламбур от старой схемы наименования в 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. Aquote2.png
Алекс Ларсон[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] Когда программа запускается, она создаёт новое пространство имени точек монтирования — это функция ядра Linux, позволяющая смотреть на списки монтирования; после этого файл монтируется при помощи fuse с уже известным префиксом, например, в /opt/bundle — эта точка монтирования доступна только программе и её дочерним процессам. Далее запускается стартовый файл, который читает нужные данные и библиотеки из этой точки. С помощью другой функции ядра — разделяемых поддеревьев (англ. shared subtrees) — имеющееся пространство имён открывается в общий доступ в систему, например, появится возможность использовать USB носитель, вставленный после запуска программы. Если установить дополнительное ПО, то установка составит собой лишь перемещение в папку (иначе в списке программ она не появится), а также появится слежение за дубликатами при помощи сравнения хешей SHA-1.[19]

Преимущества в сравнении с другими системами пакетов:

  • возможна лёгкая установка в виде перемещения файла приложения в папку ~/Apps
  • приложение работает даже если в системных пакетах будут несовместимые изменения;
  • приложение работает как на старых, так и на новых ОС — не нужно заботиться о системе;
  • можно устанавливать сразу несколько версий приложения;
  • достигается высокий уровень кросс-платформенности; однако, из-за того, что разработчик приложения не распространяет xserver или kernel, есть ограничения в системных вещах.

На основе Glick2 был создан фреймворк bundler, который повторял идеи первого.

xdg-app

В 2013 году в ядро Linux добавили нативную поддержку контейнеров — LXC.[20][21] На Hackfest2013 Алекс Ларсон опубликовал свои идеи насчёт будущего Flatpak.[22] Первые публичные работы начались в 2014 году,[23] а первый релиз состоялся в 2015 году.[24]

Flatpak

xdg-app с версии 0.6 стал именоваться Flatpak.[25]

Flatpak 0.8 имеет долгосрочную поддержку.[26][27]

Flatpak 1.0 была выпущена 20 августа 2018 года.[28][29]

1 июля 2017 года Valve добавила в SteamOS поддержку Flatpak.[30][31]

С сентября 2018 года поддерживается и Windows 10 при помощи WSL.[32]

Источник приложений

Flathub — магазин приложений для Flatpak. В нём присутствуют сборки GIMP, VS Code, Steam[33] и других популярных программ.[34] До некоторого времени приложения находились в репозитории приложений GNOME.[35]

Проблемы безопасности

Команда исследователей создала сайт flatkill.org, на котором публикуются различные вопросы безопасности относительно Flatpak. Основные проблемы — наличие устаревшего ПО в Flathub и недоработки в песочнице.

См. также

Примечания

  1. https://flatpak.org/about/
  2. 1.14.4 — 2023.
  3. The flatpak Open Source Project on Open Hub: Languages Page — 2006.
  4. https://github.com/flatpak/flatpak/blob/master/COPYING
  5. Frequently Asked Questions # Is Flatpak the same as xdg-app? (англ.). Flatpak FAQ. Дата обращения: 17 октября 2018. Архивировано 20 сентября 2018 года.
  6. Larsson, Alexander First fully sandboxed Linux desktop app (англ.). Блог GNOME (17 февраля 2015). Дата обращения: 17 октября 2018. Архивировано 29 августа 2018 года.
  7. Представлено первое полностью изолированное приложение для GNOME, OpenNET (17 февраля 2015). Архивировано 28 января 2018 года. Дата обращения: 17 октября 2018.
  8. Larsson, Alexander Using bubblewrap in xdg-app (англ.). Блог GNOME (29 апреля 2016). Дата обращения: 17 октября 2018. Архивировано 26 августа 2018 года.
  9. Willis, Nathan Working with xdg-app application bundles (англ.). LWN.net (12 августа 2015). Дата обращения: 17 октября 2018. Архивировано 23 августа 2018 года.
  10. Обзор snap vs flatpack vs appimage. Losst (9 июля 2016). Дата обращения: 22 марта 2020. Архивировано 22 марта 2020 года.
  11. 1 2 3 Larsson, Alexander. Flatpak – a history (англ.), Блог GNOME (20 June 2018). Архивировано 20 сентября 2018 года. Дата обращения: 17 октября 2018.
  12. About Flatpak (англ.). Сайт Flatpak. Дата обращения: 17 октября 2018. Архивировано 17 октября 2018 года.
  13. Glick — a runtime-less application bundle system for linux (англ.). Страница Glick в проекте GNOME. Дата обращения: 17 октября 2018. Архивировано 5 июля 2018 года.
  14. Paul, Ryan. Glick brings better standalone application bundles to Linux (англ.), Ars Technica (24 August 2007). Архивировано 20 марта 2014 года. Дата обращения: 17 октября 2018.
  15. Larsson, Alexander. Glick 0.1 released (англ.), Блог GNOME (21 August 2007). Архивировано 22 июля 2018 года. Дата обращения: 17 октября 2018.
  16. Larsson, Alexander. Glick 0.2 released (англ.), Блог GNOME (23 August 2007). Архивировано 27 августа 2018 года. Дата обращения: 17 октября 2018.
  17. glick2 — a application bundle system for linux (англ.). Дата обращения: 17 октября 2018. Архивировано 5 сентября 2018 года.
  18. Larsson, Alexander. Rethinking the Linux distibution (англ.), Блог GNOME (30 September 2011). Архивировано 9 апреля 2016 года. Дата обращения: 17 октября 2018.
  19. Larsson, Alexander. Glick2 code availible (англ.), Блог GNOME (12 October 2011). Архивировано 16 марта 2017 года. Дата обращения: 17 октября 2018.
  20. LXC 1.0.0 release announcement (англ.), Новости LXC (20 February 2014). Архивировано 2 июня 2017 года. Дата обращения: 17 октября 2018.
  21. Релиз LXC 1.0, системы управления изолированными контейнерами Linux, OpenNET (21 февраля 2014). Архивировано 9 декабря 2017 года. Дата обращения: 17 октября 2018.
  22. Larsson, Alexander. Developer Hackfest status (англ.), Блог GNOME (1 February 2013). Архивировано 27 августа 2016 года. Дата обращения: 17 октября 2018.
  23. Initial version (англ.). Репозиторий alexlarsson на GitHub (17 декабря 2014). Дата обращения: 17 октября 2018. Архивировано 17 октября 2018 года.
  24. Release 0.1 (англ.). Репозиторий alexlarsson на GitHub (23 марта 2015). Дата обращения: 17 октября 2018. Архивировано 17 октября 2018 года.
  25. Announcing Flatpak – Next Generation Linux Applications (англ.), Пресс-релизы Flatpak (21 June 2016). Архивировано 26 августа 2018 года. Дата обращения: 17 октября 2018.
  26. Alex, Larsson. A stable base for Flatpak: 0.8 (англ.), Блог GNOME (22 December 2016). Архивировано 5 сентября 2018 года. Дата обращения: 17 октября 2018.
  27. Сформирована стабильная ветка системы самодостаточных пакетов Flatpak 0.8.0, OpenNET (23 декабря 2016). Архивировано 6 февраля 2018 года. Дата обращения: 17 октября 2018.
  28. Flatpak 1.0 Released, Ready for Prime Time (англ.), Пресс-релизы Flatpak (20 August 2018). Архивировано 6 октября 2018 года. Дата обращения: 17 октября 2018.
  29. Релиз системы самодостаточных пакетов Flatpak 1.0, OpenNET (20 августа 2018). Архивировано 17 октября 2018 года. Дата обращения: 17 октября 2018.
  30. jvert. SteamOS update 2.121 released to brewmaster (англ.), Steam Universe (1 April 2017). Архивировано 3 ноября 2017 года. Дата обращения: 17 октября 2018.
  31. Обновление SteamOS 2.121 с поддержкой Flatpak, OpenNET (26 июля 2017). Архивировано 8 сентября 2018 года. Дата обращения: 17 октября 2018.
  32. Larsson, Alexander. Flatpak on windows (англ.), Блог GNOME (17 September 2018). Архивировано 17 сентября 2018 года. Дата обращения: 17 октября 2018.
  33. Sneddon, Joey. Steam is Now Available as a Flatpak, Here’s How To Install it on Ubuntu (англ.), OMG! Ubuntu! (18 June 2017). Архивировано 16 мая 2018 года. Дата обращения: 17 октября 2018.
  34. Popular Apps (англ.). Дата обращения: 17 октября 2018. Архивировано 21 декабря 2019 года.
  35. Larsson, Alexander. Gnome apps migrated to flathub (англ.), Блог GNOME (13 November 2017). Архивировано 20 февраля 2018 года. Дата обращения: 17 октября 2018.

Дополнительно по теме