Flatpak

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Flatpak
Flatpak logo.png
Тип свободное и открытое программное обеспечение и система управления пакетами
Разработчики Flatpak Team
Написана на Си[2]
Операционная система GNU/Linux[d]
Первый выпуск август 2007[1]
Последняя версия
Лицензия GNU LGPL[4]
Сайт flatpak.org

Flatpak (ранее известный как xdg-app)[5] — это утилита для развёртывания, управления пакетами и виртуализации[en] для 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][19] Когда программа запускается, она создаёт новое пространство имени точек монтирования[en] — это функция ядра 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]

Проблемы безопасности[править | править код]

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

См. также[править | править код]

Примечания[править | править код]

  1. https://flatpak.org/about/
  2. The flatpak Open Source Project on Open Hub: Languages Page — 2006.
  3. Release 1.10.1
  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 February 2015). Дата обращения: 17 октября 2018. Архивировано 29 августа 2018 года.
  7. Представлено первое полностью изолированное приложение для GNOME, OpenNET (17 февраля 2015). Архивировано 28 января 2018 года. Дата обращения 17 октября 2018.
  8. Larsson, Alexander Using bubblewrap in xdg-app (англ.). Блог GNOME (29 April 2016). Дата обращения: 17 октября 2018. Архивировано 26 августа 2018 года.
  9. Willis, Nathan Working with xdg-app application bundles (англ.). LWN.net (12 August 2015). Дата обращения: 17 октября 2018. Архивировано 23 августа 2018 года.
  10. Обзор snap vs flatpack vs appimage. Losst (9 июля 2016). Дата обращения: 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. Intro to bundles (прим.: работа бандлов на видео) на YouTube
  20. Larsson, Alexander. Glick2 code availible (англ.), Блог GNOME (12 October 2011). Архивировано 16 марта 2017 года. Дата обращения 17 октября 2018.
  21. LXC 1.0.0 release announcement (англ.), Новости LXC (20 February 2014). Архивировано 2 июня 2017 года. Дата обращения 17 октября 2018.
  22. Релиз LXC 1.0, системы управления изолированными контейнерами Linux, OpenNET (21 февраля 2014). Архивировано 9 декабря 2017 года. Дата обращения 17 октября 2018.
  23. Larsson, Alexander. Developer Hackfest status (англ.), Блог GNOME (1 February 2013). Архивировано 27 августа 2016 года. Дата обращения 17 октября 2018.
  24. Initial version (англ.). Репозиторий alexlarsson на GitHub (17 December 2014). Дата обращения: 17 октября 2018. Архивировано 17 октября 2018 года.
  25. Release 0.1 (англ.). Репозиторий alexlarsson на GitHub (23 March 2015). Дата обращения: 17 октября 2018. Архивировано 17 октября 2018 года.
  26. Announcing Flatpak – Next Generation Linux Applications (англ.), Пресс-релизы Flatpak (21 June 2016). Архивировано 26 августа 2018 года. Дата обращения 17 октября 2018.
  27. Alex, Larsson. A stable base for Flatpak: 0.8 (англ.), Блог GNOME (22 December 2016). Архивировано 5 сентября 2018 года. Дата обращения 17 октября 2018.
  28. Сформирована стабильная ветка системы самодостаточных пакетов Flatpak 0.8.0, OpenNET (23 декабря 2016). Архивировано 6 февраля 2018 года. Дата обращения 17 октября 2018.
  29. Flatpak 1.0 Released, Ready for Prime Time (англ.), Пресс-релизы Flatpak (20 August 2018). Архивировано 6 октября 2018 года. Дата обращения 17 октября 2018.
  30. Релиз системы самодостаточных пакетов Flatpak 1.0, OpenNET (20 августа 2018). Архивировано 17 октября 2018 года. Дата обращения 17 октября 2018.
  31. jvert. SteamOS update 2.121 released to brewmaster (англ.), Steam Universe (1 April 2017). Архивировано 3 ноября 2017 года. Дата обращения 17 октября 2018.
  32. Обновление SteamOS 2.121 с поддержкой Flatpak, OpenNET (26 июля 2017). Архивировано 8 сентября 2018 года. Дата обращения 17 октября 2018.
  33. Larsson, Alexander. Flatpak on windows (англ.), Блог GNOME (17 September 2018). Архивировано 17 сентября 2018 года. Дата обращения 17 октября 2018.
  34. 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.
  35. Popular Apps (англ.). Дата обращения: 17 октября 2018.
  36. Larsson, Alexander. Gnome apps migrated to flathub (англ.), Блог GNOME (13 November 2017). Архивировано 20 февраля 2018 года. Дата обращения 17 октября 2018.