Инструментарий astraflatpaktools#
astraflatpaktools (далее AFT) — набор инструментов для создания Flatpak-пакетов
из существующих deb-пакетов и для формирования рантаймов на основе базовой системы.
AFT позволяет перевести уже собранное ПО в формат Flatpak без необходимости
пересборки из исходного кода.
Примечание
В отличие от flatpak-builder, который компилирует приложение из исходников,
AFT работает с готовыми бинарными пакетами. Это принципиально иной подход:
вместо описания процесса сборки разработчик описывает, какой deb-пакет
упаковать и какие разрешения ему предоставить.
Состав инструментария#
AFT состоит из трёх самостоятельных инструментов:
Инструмент |
Назначение |
|---|---|
|
Сборка Flatpak-приложений из deb-пакетов. Анализирует зависимости, загружает необходимые пакеты, формирует структуру Flatpak и экспортирует результат в OSTree-репозиторий. |
|
Создание Flatpak-рантаймов. Формирует базовую систему из дистрибутива (через debootstrap), Docker-образа или существующей корневой файловой системы, устанавливает необходимые пакеты и экспортирует рантайм. |
|
Генерация SBOM (Software Bill of Materials) в формате CycloneDX для рантаймов
и установленных Flatpak-приложений. Включает два исполняемых файла:
|
Архитектура#
Взаимодействие компонентов:
aft-runtimeсоздаёт рантайм — базовый набор библиотек, на который опираются приложения.aft-appсобирает приложение, используя рантайм как эталон: анализирует зависимости deb-пакета, определяет, какие библиотеки уже есть в рантайме (через SBOM), и включает в пакет только недостающие.aft-sbomгенерирует перечень компонентов (SBOM) для рантаймов и приложений, обеспечивая прозрачность состава ПО.
Общие принципы работы#
YAML-манифесты#
Каждый инструмент принимает на вход YAML-манифест — декларативное описание того, что необходимо собрать. Манифест определяет:
Метаданные пакета (идентификатор, имя, версия, архитектура);
Источник (deb-пакет, каталог, Docker-образ);
Параметры сборки (SBOM, кеширование, подпись);
Параметры экспорта (репозиторий, GPG-ключ).
Манифесты поддерживают многодокументный формат YAML: несколько манифестов
в одном файле, разделённых символами ---. Это позволяет описать
несколько приложений или рантаймов в одном файле и собрать их одной командой.
Интерактивный генератор манифестов#
Все инструменты AFT включают встроенный генератор манифестов — интерактивную HTML-форму, открываемую в браузере. Генератор помогает создать корректный манифест с подсказками по каждому полю.
Запуск генератора:
aft-app generate-manifest
aft-runtime generate-manifest
Или с помощью глобального флага:
aft-app -G
aft-runtime -G
Валидация манифестов#
Перед сборкой манифест можно проверить на корректность:
aft-app validate <файл.yaml>
aft-runtime validate <файл.yaml>
Валидация проверяет наличие обязательных полей, корректность формата идентификатора (обратный DNS с точками), допустимость архитектуры, согласованность полей источника и другие правила.
Привилегии#
Команды сборки (build, package, create, import) требуют
привилегий суперпользователя, так как работают с chroot-средами, монтированием
файловых систем и операциями dpkg. Запуск осуществляется через sudo:
sudo aft-app build manifest.yaml
sudo aft-runtime build manifest.yaml
Команды validate, analyze, generate-manifest, list и help
не требуют привилегий суперпользователя.
Примечание
Команда clean не требует root в aft-app, но требует в aft-runtime.