нова стабільна гілка інструментарію , который предоставляет систему для сборки самодостаточных пакетов, не привязанных к конкретным дистрибутивам Linux і виконуваним у спеціальному контейнері, що ізолює додаток від решти системи. Підтримка виконання Flatpak-пакетів забезпечена Arch Linux, , Debian, Fedora, Gentoo, Mageia, Linux Mint та Ubuntu. Пакети з Flatpak включені до репозиторій Fedora і підтримуються в штатній програмі керування програмами GNOME.
Ключові у гілці Flatpak 1.6:
- В додано метод CreateUpdateMonitor, що дозволяє програмам відстежувати появу оновлень і вимагати встановлення оновлення, що з'явилося.
Для заборони повноважень самостійної установки оновлень програмою можна використовувати команду "flatpak permission-set flatpak updates $APPID no" (якщо вказати "ask" замість "no", то щоразу буде виводитися діалог для підтвердження оновлення); - Для спрощення створення обробників запропоновано бібліотеку
libportal, яка дає можливість обробки подій без прямого використання API Portal і аналізу сигналів, що надходять через D-Bus.
Libportal надає прості асинхронно працюючі прошарки для більшості."; - Додано нове повноваження «socket=cups» для надання прямого доступу до сервера друку CUPS;
- Змінено протокол та API для обробки аутентифікації. Додано аутентифікатор для OCI (Open Container Initiative). Реалізовано підтримку автоматичної установки аутентифікаторів із зовнішнього репозиторію flatpak. У FlatpakTransaction доданий callback-обробник для використання аутентифікації за логіном та паролем за аналогією з методом аутентифікації HTTP basic;
- Додано підтримку захищених додатків та систем, що вимагають автентифікації при завантаженні;
- Прошарок bubblewrap, що використовується для ізоляції, оновлений до випуску ;
- Додано опціональну підтримку батьківського контролю через застосування бібліотеки , що дозволяє обмежити доступ до певних видів контенту;
- Розширення тепер встановлюються до програми, що дозволяє отримати робочий додаток відразу після завершення його встановлення;
- Перероблено маніпуляції з тимчасовими файлами, що дозволило покращити роботу в умовах нестачі вільного дискового простору;
- Для виконання команди «» більше не потрібне використання sudo;
- До порталів додано можливість запуску вкладених ізольованих оточень (sub-sandbox) для дочірніх процесів;
- Додані нові команди «flatpak permission-set» та «permission-remove» для управління установкою повноважень;
- Додано опцію «flatpak install —or-update», яка виконує оновлення, якщо програма вже встановлена;
- Додано команду «flatpak mask» для закріплення версії та заборони встановлення оновлень;
- Для образів у форматі OCI (Open Container Initiative) додана підтримка прив'язки міток, генерації історії змін в образі та включення mime-типів docker, крім mime-типів OCI;
- У налаштуваннях доданий ключ default-languages для визначення списку мов, на додаток до системного списку.
Нагадаємо, що розробникам додатків 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 та контейнерів додатків формується за допомогою технології , коли образ атомарно оновлюється з Git-подібного сховища, що дозволяє застосовувати методи версійного контролю до компонентів дистрибутива (наприклад можна швидко відкотити систему до минулого стану). RPM-пакети транслюються в репозиторій OSTree за допомогою спеціального прошарку . Окрема установка та оновлення пакетів усередині робочого оточення не підтримується, система оновлюється не лише на рівні окремих компонентів, а повністю, атомарно змінюючи свій стан. Надаються засоби для інкрементального застосування оновлень, що позбавляють необхідності повної заміни образу при кожному оновленні.
Формоване ізольоване оточення повністю незалежно від дистрибутива, що використовується, і при належних налаштуваннях пакета, не має доступу до файлів і процесів користувача або основної системи, не може безпосередньо звертатися до обладнання, за винятком виведення через DRI, і мережевої підсистеми. Виведення графіки та організація введення за допомогою протоколу Wayland або через прокидання сокету X11. Взаємодія із зовнішнім середовищем побудована на основі системи обміну повідомленнями DBus та спеціального API Portals. Для ізоляції прошарок и традиционные для Linux технології контейнерної віртуалізації, засновані на використанні cgroups, просторів імен (namespaces), Seccomp та SELinux. Для вывода звука применяется PulseAudio.
Джерело: opennet.ru
