Справочник манифеста aft-runtime#
Манифест aft-runtime — YAML-файл, описывающий параметры создания
Flatpak-рантайма. Передаётся команде aft-runtime build и определяет
источник базовой системы, устанавливаемые пакеты, параметры SDK, подписи
и экспорта.
Корневые поля#
version: "1.0"
metadata: { }
source: { }
additional-repos: [ ]
packages: { }
commands: { }
environment: { }
extensions: [ ]
build: { }
export: { }
versionВерсия формата манифеста. По умолчанию:
"1.0".
Секция metadata#
metadata:
id: org.example.Platform
name: Example Runtime
description: Runtime for Example applications
version: "1.0"
arch: amd64
branch: stable
tags:
- base
Поле |
Тип |
Обязательное |
Описание |
|---|---|---|---|
|
строка |
Да |
Идентификатор рантайма в формате обратного DNS. |
|
строка |
Нет |
Отображаемое имя (используется в |
|
строка |
Нет |
Описание (используется в AppStream metainfo). |
|
строка |
Да |
Версия рантайма. |
|
строка |
Да |
Архитектура: |
|
строка |
Нет |
Ветка в репозитории. По умолчанию: |
|
массив строк |
Нет |
Теги AppStream. |
Секция source#
Определяет источник базовой файловой системы. Структура зависит от type.
Тип debootstrap#
source:
type: debootstrap
debootstrap:
distribution: <имя-дистрибутива>
suite: stable
mirror: <url-зеркала>
components:
- main
- contrib
- non-free
variant: minbase
Поле |
Тип |
Обязательное |
Описание |
|---|---|---|---|
|
строка |
Да |
Имя дистрибутива для debootstrap. |
|
строка |
Нет |
Suite. По умолчанию: |
|
строка |
Да |
URL зеркала репозитория пакетов. |
|
массив строк |
Нет |
Компоненты. По умолчанию: |
|
строка |
Нет |
Вариант установки. Допустимые значения: |
Тип docker#
source:
type: docker
docker:
image: <имя-образа>:<тег>
Поле |
Тип |
Обязательное |
Описание |
|---|---|---|---|
|
строка |
Да |
Имя Docker-образа с опциональным тегом (например, |
Тип import#
source:
type: import
import:
path: /path/to/rootfs
Поле |
Тип |
Обязательное |
Описание |
|---|---|---|---|
|
строка |
Да |
Путь к корневой файловой системе. Поддерживаются: каталог,
tar-архив ( |
Секция additional-repos#
Дополнительные APT-репозитории, подключаемые в chroot-среде перед установкой пакетов (массив объектов).
additional-repos:
- url: https://repo.example.com/packages
codename: stable
components:
- main
key-url: https://repo.example.com/gpg-key.gpg
- url: https://other.example.com/repo
codename: testing
components:
- main
- contrib
Поле |
Тип |
Обязательное |
Описание |
|---|---|---|---|
|
строка |
Да |
URL репозитория. |
|
строка |
Да |
Кодовое имя дистрибутива ( |
|
массив строк |
Нет |
Компоненты репозитория. |
|
строка |
Нет |
URL GPG-ключа. Ключ загружается и помещается в |
Секция packages#
Определяет пакеты для установки в рантайм и SDK.
packages:
runtime:
- bash
- coreutils
- libc6
- libstdc++6
- zlib1g
- libssl3
- ca-certificates
sdk:
- build-essential
- pkg-config
- cmake
- git
- autoconf
- automake
Поле |
Тип |
Описание |
|---|---|---|
|
массив строк |
Пакеты, устанавливаемые в рантайм. Обязательное поле. |
|
массив строк |
Дополнительные пакеты, устанавливаемые в SDK. SDK включает все пакеты рантайма плюс указанные здесь. |
Секция commands#
commands:
post-install:
- ldconfig
- update-ca-certificates
- fc-cache -fv
Поле |
Тип |
Описание |
|---|---|---|
|
массив строк |
Команды, выполняемые в chroot после установки пакетов.
Типичные применения: пересборка кеша библиотек ( |
Секция environment#
Переменные окружения, встраиваемые в метаданные рантайма. Эти переменные будут доступны всем приложениям, использующим рантайм.
environment:
LANG: en_US.UTF-8
LC_ALL: en_US.UTF-8
QT_QPA_PLATFORM: wayland
Формат: ключ-значение. Ключ — имя переменной, значение — строка.
Секция extensions#
Определяет точки расширений рантайма (массив объектов). Структура полностью
аналогична расширениям aft-app (см. Справочник манифеста aft-app).
extensions:
- name: org.example.Platform.Locale
directory: share/runtime/locale
autodelete: true
locale-subset: true
- name: org.example.Platform.GL
directory: lib/GL
version: "1.0"
versions: "1.0;1.4"
subdirectories: true
add-ld-path: lib
download-if: active-gl-driver
enable-if: active-gl-driver
autodelete: false
Полное описание полей расширений — в секции «Секция extensions» документа Справочник манифеста aft-app.
Секция build#
Управляет параметрами создания рантайма.
build:
sdk: false
sbom: false
clean-docs: false
signing:
enabled: false
key: ""
bsign:
enabled: false
key: ""
passphraseFile: ""
detached: false
detachedPath: ""
elfOnly: true
exportKey: true
useBsignIntegrator: false
password: ""
Параметры верхнего уровня#
Поле |
Тип |
По умолчанию |
Описание |
|---|---|---|---|
|
булево |
|
Создать SDK-версию рантайма. |
|
булево |
|
Генерировать SBOM (CycloneDX JSON). |
|
булево |
|
Удалить документацию ( |
Подсекция signing#
GPG-подпись коммитов в репозитории.
Поле |
Тип |
По умолчанию |
Описание |
|---|---|---|---|
|
булево |
|
Включить GPG-подпись. |
|
строка |
|
Идентификатор GPG-ключа. |
Подсекция bsign#
Подпись ELF-файлов. Поля идентичны подсекции bsign манифеста
aft-app (см. Справочник манифеста aft-app).
Поле |
Тип |
По умолчанию |
Описание |
|---|---|---|---|
|
булево |
|
Включить подпись ELF-файлов. |
|
строка |
|
Идентификатор GPG-ключа для bsign. |
|
строка |
|
Путь к файлу с паролем. |
|
булево |
|
Использовать отделённые подписи. |
|
строка |
|
Каталог для отделённых подписей. |
|
булево |
|
Встраивать подпись в ELF-секцию. |
|
булево |
|
Экспортировать публичный ключ в рантайм. |
|
булево |
|
Использовать |
|
строка |
|
Пароль для |
Секция export#
Параметры экспорта в OSTree-репозиторий.
export:
repository: ./repo
collection-id: ""
generate-static-deltas: false
prune: false
Поле |
Тип |
По умолчанию |
Описание |
|---|---|---|---|
|
строка |
|
Путь к OSTree-репозиторию. |
|
строка |
|
Collection ID (защита от подмены). |
|
булево |
|
Генерировать статические дельты. |
|
булево |
|
Удалить устаревшие объекты. |
Полный пример манифеста#
version: "1.0"
metadata:
id: org.example.Platform
name: Example Runtime
description: Base runtime with system libraries
version: "1.0"
arch: amd64
branch: stable
tags:
- base
- runtime
source:
type: debootstrap
debootstrap:
distribution: <имя-дистрибутива>
suite: stable
mirror: <url-зеркала>
components:
- main
- contrib
variant: minbase
additional-repos:
- url: https://repo.example.com/extras
codename: stable
components:
- main
key-url: https://repo.example.com/key.gpg
packages:
runtime:
- bash
- coreutils
- libc6
- libstdc++6
- zlib1g
- libssl3
- ca-certificates
- libglib2.0-0
- libx11-6
- libwayland-client0
sdk:
- build-essential
- pkg-config
- cmake
- git
- autoconf
- automake
- libtool
commands:
post-install:
- ldconfig
- update-ca-certificates
environment:
LANG: en_US.UTF-8
LC_ALL: en_US.UTF-8
extensions:
- name: org.example.Platform.Locale
directory: share/runtime/locale
autodelete: true
locale-subset: true
build:
sdk: true
sbom: true
clean-docs: true
bsign:
enabled: true
key: ABCDEF1234567890
elfOnly: true
exportKey: true
export:
repository: ./repo
generate-static-deltas: true
Многодокументный формат#
Один YAML-файл может содержать несколько манифестов, разделённых ---:
version: "1.0"
metadata:
id: org.example.Platform
version: "1.0"
arch: amd64
source:
type: debootstrap
debootstrap:
distribution: <имя-дистрибутива>
mirror: <url-зеркала>
packages:
runtime:
- bash
- libc6
export:
repository: ./repo
---
version: "1.0"
metadata:
id: org.example.ExtendedPlatform
version: "1.0"
arch: amd64
source:
type: debootstrap
debootstrap:
distribution: <имя-дистрибутива>
mirror: <url-зеркала>
packages:
runtime:
- bash
- libc6
- libx11-6
- libwayland-client0
export:
repository: ./repo
Каждый документ обрабатывается и экспортируется независимо.
Правила валидации#
Ошибки (прерывают сборку)#
Поле
metadata.idдолжно быть указано.Поле
metadata.versionдолжно быть указано.Значение
metadata.archдолжно быть допустимым (amd64,arm64,x86_64,aarch64).Секция
sourceдолжна быть указана.Для
source.type: debootstrap— обязательныdistributionиmirror.Для
source.type: docker— обязательноimage.Для
source.type: import— обязательноpath.Массив
packages.runtimeдолжен содержать хотя бы один пакет.