Инструментарий astraflatpaktools#

astraflatpaktools (далее AFT) — набор инструментов для создания Flatpak-пакетов из существующих deb-пакетов и для формирования рантаймов на основе базовой системы. AFT позволяет перевести уже собранное ПО в формат Flatpak без необходимости пересборки из исходного кода.

Примечание

В отличие от flatpak-builder, который компилирует приложение из исходников, AFT работает с готовыми бинарными пакетами. Это принципиально иной подход: вместо описания процесса сборки разработчик описывает, какой deb-пакет упаковать и какие разрешения ему предоставить.

Состав инструментария#

AFT состоит из трёх самостоятельных инструментов:

Инструмент

Назначение

aft-app

Сборка Flatpak-приложений из deb-пакетов. Анализирует зависимости, загружает необходимые пакеты, формирует структуру Flatpak и экспортирует результат в OSTree-репозиторий.

aft-runtime

Создание Flatpak-рантаймов. Формирует базовую систему из дистрибутива (через debootstrap), Docker-образа или существующей корневой файловой системы, устанавливает необходимые пакеты и экспортирует рантайм.

aft-sbom

Генерация SBOM (Software Bill of Materials) в формате CycloneDX для рантаймов и установленных Flatpak-приложений. Включает два исполняемых файла: aft-sbom-generator и aft-flatpak-sbom.

Архитектура#

Взаимодействие компонентов:

  1. aft-runtime создаёт рантайм — базовый набор библиотек, на который опираются приложения.

  2. aft-app собирает приложение, используя рантайм как эталон: анализирует зависимости deb-пакета, определяет, какие библиотеки уже есть в рантайме (через SBOM), и включает в пакет только недостающие.

  3. 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.

Компоненты AFT