aft-runtime: создание рантаймов#
aft-runtime — инструмент для создания Flatpak-рантаймов из базовой
системы. Рантайм формируется на основе одного из трёх источников:
дистрибутива (через debootstrap), Docker-образа или существующей
корневой файловой системы. Результат экспортируется в OSTree-репозиторий
и может использоваться приложениями, собранными через aft-app
или flatpak-builder.
Команды#
build#
Сборка рантайма по YAML-манифесту:
sudo aft-runtime build <файл.yaml>
Манифест может содержать несколько документов (разделённых ---),
каждый из которых описывает отдельный рантайм.
create#
Создание рантайма из параметров командной строки:
sudo aft-runtime create --id org.example.Platform --version stable --source debootstrap --distribution <имя-дистрибутива> --mirror <url-зеркала> --package bash --package coreutils
import#
Импорт рантайма из Docker-образа или корневой файловой системы:
sudo aft-runtime import --id org.example.Platform --version stable --docker-image <имя-образа>:<тег>
sudo aft-runtime import --id org.example.Platform --version stable --rootfs /path/to/rootfs
validate#
Проверка корректности манифеста:
aft-runtime validate <файл.yaml>
list#
Список рантаймов в репозитории:
aft-runtime list
clean#
Очистка рабочего каталога:
aft-runtime clean
generate-manifest#
Открытие генератора манифестов в браузере:
aft-runtime generate-manifest
aft-runtime -G
help#
aft-runtime help
Параметры команды create#
Основные параметры#
Параметр |
Обязательный |
Описание |
|---|---|---|
|
Да |
Идентификатор рантайма (обратный DNS). |
|
Да |
Версия рантайма. |
|
Нет |
Архитектура. По умолчанию: |
|
Нет |
Ветка (например, |
Параметры источника#
Параметр |
Обязательный |
Описание |
|---|---|---|
|
Да |
Тип источника: |
|
Условно |
Имя дистрибутива (обязательно для |
|
Нет |
Suite для debootstrap ( |
|
Условно |
URL зеркала (обязательно для |
|
Условно |
Имя Docker-образа (обязательно для |
|
Условно |
Путь к rootfs (обязательно для |
Пакеты и репозитории#
Все параметры можно указывать многократно.
Параметр |
Описание |
|---|---|
|
Пакет для установки в рантайм. |
|
Дополнительный пакет для SDK. |
|
Компонент репозитория ( |
|
Строка APT-репозитория для подключения. |
|
Команда, выполняемая после установки пакетов. |
|
Переменная окружения (формат |
Параметры сборки#
Параметр |
По умолчанию |
Описание |
|---|---|---|
|
|
Создать SDK-версию рантайма. |
|
|
Генерировать SBOM. |
|
|
Удалить документацию из рантайма. |
|
Идентификатор GPG-ключа для подписи. |
Пути#
Параметр |
По умолчанию |
Описание |
|---|---|---|
|
|
Рабочий каталог для промежуточных файлов. |
|
|
Путь к OSTree-репозиторию. |
Логирование#
-V,--verbose— уровень debug;-q,--quiet— уровень error;-l,--log-level— явное указание (debug,info,warn,error).
Типы источников#
debootstrap#
Формирует минимальную систему из пакетов указанного дистрибутива. Требует
наличия утилиты debootstrap в системе.
Параметры в манифесте:
source:
type: debootstrap
debootstrap:
distribution: <имя-дистрибутива>
suite: stable
mirror: <url-зеркала>
components:
- main
- contrib
variant: minbase
Подробное описание полей — в Справочник манифеста aft-runtime.
docker#
Экспортирует файловую систему из Docker-образа. Требует наличия утилиты
docker и работающего демона Docker.
source:
type: docker
docker:
image: <имя-образа>:<тег>
Если образ отсутствует локально, он загружается автоматически.
import#
Импортирует существующую файловую систему. Поддерживает два формата входных данных:
Каталог — рекурсивное копирование;
Tar-архив — с автоопределением формата сжатия;
source:
type: import
import:
path: /path/to/rootfs
Дополнительные репозитории#
Секция additional-repos позволяет подключить дополнительные APT-репозитории
в chroot-среде перед установкой пакетов.
additional-repos:
- url: https://repo.example.com/packages
codename: stable
components:
- main
key-url: https://repo.example.com/key.gpg
Каждый репозиторий содержит:
url(обязательное) — URL репозитория;codename(обязательное) — кодовое имя (stable,testing);components— компоненты (main,contrib,non-free);key-url— URL GPG-ключа репозитория (загружается и добавляется вtrusted.gpg.d/).
Создание SDK#
SDK создаётся автоматически при build.sdk: true в манифесте или при
указании параметра -S/--sdk в командной строке.
SDK — это расширенная копия рантайма, дополненная пакетами для разработки.
Пакеты SDK указываются в секции packages.sdk манифеста:
packages:
runtime:
- bash
- coreutils
- libc6
sdk:
- build-essential
- pkg-config
- cmake
- git
SDK экспортируется в тот же репозиторий, что и рантайм, с идентификатором,
производным от идентификатора рантайма. Например, для рантайма
org.example.Platform SDK будет иметь идентификатор org.example.Sdk.
Примеры#
Создание рантайма из debootstrap#
sudo aft-runtime create \
--id org.example.Platform \
--version stable \
--source debootstrap \
--distribution <имя-дистрибутива> \
--mirror <url-зеркала> \
--component main \
--component contrib \
--package bash \
--package coreutils \
--package libc6 \
--package libstdc++6 \
--package zlib1g \
--sdk \
--sdk-package build-essential \
--sdk-package cmake \
--sbom \
--output ./repo
Импорт рантайма из Docker-образа#
sudo aft-runtime create \
--id org.example.Platform \
--version stable \
--source docker \
--docker-image <имя-образа>:<тег> \
--package libssl3 \
--output ./repo
Импорт из существующей rootfs#
sudo aft-runtime create \
--id org.example.Platform \
--version stable \
--source import \
--rootfs /path/to/rootfs \
--output ./repo
Сборка из манифеста#
sudo aft-runtime build runtime.yaml