Flatpak
Flatpak (раніше відомий як xdg-app)[4] — система для збирання самодостатніх пакунків, не прив'язаних до конкретних дистрибутивів Linux і виконуваних в спеціальному контейнері, що ізолює застосунок від решти системи. Підтримка виконання Flatpak-пакунків забезпечена для Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint і Ubuntu. Пакунки з Flatpak включені в репозиторій Fedora і підтримуються в штатній програмі управління застосунками GNOME.
| |
Тип | вільне та відкрите програмне забезпечення і система керування пакунками |
---|---|
Автор(и) | Alex Larsson |
Розробник | Flatpak Team |
Перший випуск | вересень 2015[1] |
Стабільний випуск | 1.4.1 (13 червня, 2019[2]) |
Репозиторій | github.com/flatpak/flatpak |
Операційна система | Linux |
Мова програмування | C |
Ліцензія | LGPL[3] |
Вебсайт | flatpak.org |
Flatpak у Вікісховищі |
Огляд
Розробникам застосунків Flatpak дає можливість спростити поширення своїх програм, що не входять у штатні репозиторії дистрибутивів, за рахунок підготовки одного універсального контейнера без формування окремих складань для кожного дистрибутиву. Для користувачів, що піклуються про безпеку, Flatpak дозволяє виконати застосунок, що викликає сумнів, у контейнері, надавши доступ тільки до мережевих функцій та файлів користувача, пов'язаних із застосунком. Для користувачів, які цікавляться новинками, Flatpak дозволяє встановити найсвіжіші тестові і стабільні випуски програм, без необхідності внесення змін до системи. Наприклад, Flatpak-пакунки вже збираються для LibreOffice, Firefox, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio тощо.
Для зменшення розміру пакета, він включає лише залежності, специфічні для застосунку, а базові системні і графічні бібліотеки (GTK, Qt, бібліотеки GNOME і KDE тощо) оформлені у вигляді підключених типових runtime-оточень. Ключова відмінність Flatpak від Snap полягає в тому, що Snap використовує компоненти оточення основної системи і ізоляцію на основі фільтрації системних викликів, тоді як Flatpak створює окремий від системи контейнер і оперує великими runtime-наборами, надаючи як залежності пакунки, а типові системні оточення (наприклад, всі бібліотеки, необхідні для роботи програм GNOME або KDE).
Крім типового системного оточення (runtime), що встановлюється через спеціальний репозиторій, поставляються додаткові залежності (bundle), необхідні для роботи програми. В сумі runtime і bundle утворюють начинку контейнера, при тому, що runtime встановлюється окремо і прив'язується відразу до декількох контейнерів, що дозволяє обійтися без дублювання спільних для контейнерів системних файлів. В одній системі може бути встановлено кілька різних runtime (GNOME, KDE) або кілька версій одного runtime (GNOME 3.26, GNOME 3.28). Контейнер із застосунком як залежність використовує прив'язку тільки до певного runtime, без урахування окремих пакунків, з яких складається runtime. Всі відсутні елементи упаковуються безпосередньо разом з застосунком. При формуванні контейнера вміст runtime монтується як розділ /usr, а bundle монтується в директорію /app.
Начинка runtime і контейнерів застосунків формується з використанням технології OSTree, при якій образ атомарно оновлюється з Git-подібного сховища, що дозволяє застосовувати методи версійного контролю до компонентів дистрибутиву (наприклад, можна швидко відкотити систему до минулого стану). RPM-пакунки транслюються в репозиторій OSTree за допомогою спеціальної прошарку rpm-ostree. Окрема установка і оновлення пакунків всередині робочого оточення не підтримується, система оновлюється не на рівні окремих компонентів, а цілком, атомарному змінюючи свій стан. Надаються засоби для інкрементального застосування оновлень, які позбавляють від необхідності повної заміни способу при кожному оновленні.
Сформоване ізольоване оточення повністю незалежно від використовуваного дистрибутива, і при належних настройках пакунку не має доступу до файлів і процесів користувача або основної системи, не може безпосередньо звертатися до обладнання, за винятком виводу через DRI, і мережевої підсистеми. Вивід графіки і організація вводу реалізована за допомогою протоколу Wayland або через кидок сокета X11. Взаємодія з зовнішнім середовищем побудовано на основі системи обміну повідомленнями DBus і спеціального API Portals. Для ізоляції використовується прошарок Bubblewrap і традиційні для Linux технології контейнерної віртуалізації, засновані на використанні cgroups, просторів імен (namespaces), Seccomp і SELinux. Для виводу звуку застосовується PulseAudio.
Flathub
Flathub — це магазин застосунків Flatpak. У ньому присутні складання GIMP, VS Code, Steam[5] та інших популярних програм[6] До деякого часу застосунки перебували в репозиторії програм GNOME.[7]
Виноски
- Flatpak's History. GitHub.
- Releases · flatpak/flatpak. GitHub.
- LGPL. xdg-app repository. freedesktop.org. Процитовано 21 листопада 2016.
- Frequently Asked Questions # Is Flatpak the same as xdg-app?. Flatpak FAQ (англ.). Архів оригіналу за 20 вересня 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.
- Larsson, Alexander (13 листопада 2017). Gnome apps migrated to flathub. Блог GNOME (англ.). Архів оригіналу за 20 лютого 2018. Процитовано 17 жовтня 2018.