Манифест среды выполнения#
Манифест - это YAML-файл, который полностью описывает сборку среды выполнения. Он собирает в одном месте всё то же, что задаётся флагами команд create и import, и добавляет настройки, доступные только из файла: дополнительные репозитории с ключами, отдельные списки пакетов для среды и SDK, точки расширения и подпись по ГОСТ. Манифест собирают командой build и проверяют командой validate.
В одном файле можно описать несколько сред, разделив документы строкой ---;
они собираются по очереди.
Манифест разбирается строго: одиночное значение вместо списка, значение неподходящего типа, неизвестное поле и поле, указанное дважды, отклоняются с указанием пути до поля и номера строки. Правила разбора те же, что у приложений, и подробно описаны в блоке Манифест приложения.
Ниже разобрана каждая секция и каждое поле: назначение и, где есть, значение по умолчанию.
version#
Строка версии формата манифеста. По умолчанию 1.0.
version: "1.0"
metadata#
Метаданные среды.
id- идентификатор в формате reverse-DNS. Обязателен.name- отображаемое имя (для списка установленных и каталога приложений).description- описание среды (попадает в метаданные).version- версия среды.arch- архитектура: amd64, arm64, i386, armhf. По умолчанию amd64.branch- ветка. По умолчанию stable.tags- список меток для каталога приложений.
metadata:
id: org.astralinux.Platform
name: "Astra Linux Platform"
description: "Базовая платформа Astra Linux"
version: "1.8"
arch: amd64
branch: stable
source#
Источник базовой системы. Поле type выбирает один из вариантов; заполняется
одноимённая вложенная секция. Подробно про каждый источник - в блоке
Источники базовой системы.
Допустимые значения type: debootstrap, docker, import.
debootstrap#
distribution- дистрибутив.suite- suite. По умолчанию пусто (берётся значение дистрибутива).mirror- зеркало APT.components- компоненты репозитория. По умолчанию один компонент main.variant- вариант базовой системы. По умолчанию minbase.
source:
type: debootstrap
debootstrap:
distribution: astralinux
suite: stable
mirror: https://download.astralinux.ru/astra/stable/1.8_x86-64/repository
components: [main, contrib, non-free]
variant: minbase
docker#
image- имя образа (с тегом или без).
source:
type: docker
docker:
image: astralinux/alse:1.8
import#
path- путь к rootfs (каталог, архив или образ).
source:
type: import
import:
path: /opt/rootfs
additional-repos#
Список дополнительных APT-репозиториев, подключаемых в систему перед установкой пакетов. У каждой записи поля:
url- адрес репозитория.codename- кодовое имя (например, stable).components- список компонентов.key-url- адрес GPG-ключа репозитория.
additional-repos:
- url: https://example.com/repo
codename: stable
components: [main]
key-url: https://example.com/repo/key.gpg
packages#
Списки пакетов для установки.
runtime- пакеты среды.sdk- дополнительные пакеты только для SDK.
packages:
runtime: [libc6, libglib2.0-0, libflatpak0]
sdk: [build-essential, pkg-config]
commands#
Команды, выполняемые в собираемой системе.
post-install- список команд, выполняемых после установки пакетов.
commands:
post-install:
- "locale-gen ru_RU.UTF-8"
environment#
Переменные окружения, записываемые в метаданные среды. Задаются как пары ключ и значение.
environment:
LANG: "ru_RU.UTF-8"
LC_ALL: "ru_RU.UTF-8"
extensions#
Список точек расширения, которые объявляет среда (см. блок Пакеты, SDK и точки расширения). У каждой записи обязательны имя и каталог.
name- имя точки расширения (reverse-DNS). Обязательно.directory- каталог монтирования. Обязателен.version- одна поддерживаемая версия.versions- несколько версий через точку с запятой.autodelete- удалять автоматически, когда не нужно. По умолчанию false.no-autodownload- не скачивать автоматически. По умолчанию false.locale-subset- точка для набора локалей. По умолчанию false.subdirectories- создавать поддиректории для вариантов. По умолчанию false.add-ld-path- каталог, добавляемый к путям поиска библиотек.download-if- условие скачивания.enable-if- условие включения.autoprune-unless- условие автоудаления.merge-dirs- каталоги для слияния с родительскими.subdirectory-suffix- суффикс поддиректорий.
extensions:
- name: org.astralinux.Platform.Locale
directory: share/runtime/locale
locale-subset: true
build#
Параметры сборки, подписи и поиска уязвимостей.
sdk- собирать SDK-вариант. По умолчанию false.sbom- генерировать состав ПО. По умолчанию false.clean-docs- убирать документацию, man- и info-страницы. По умолчанию false.
Вложенная секция signing - подпись репозитория ключом GPG:
enabled- включить подпись. По умолчанию false.key- идентификатор ключа.
Вложенная секция bsign - подпись ELF по ГОСТ:
enabled- включить подпись. По умолчанию false.key- идентификатор ключа.passphraseFile- файл с паролем для пакетной подписи.detached- отсоединённые подписи. По умолчанию false.detachedPath- каталог для отсоединённых подписей.elfOnly- встраиваемая подпись в ELF. По умолчанию true.exportKey- выложить публичный ключ в среду. По умолчанию true.useBsignIntegrator- использовать bsign-integrator. По умолчанию false.password- пароль для bsign-integrator.
Вложенная секция scan - поиск уязвимостей после экспорта:
enabled- включить проверку. По умолчанию false.ovalDir- каталог с базой определений.failOn- уровень, начиная с которого сборка считается неуспешной.strict- строгий режим. По умолчанию false.severities- список проверяемых уровней.ignoreCves- список исключаемых уязвимостей.ignorePackages- список исключаемых пакетов.
build:
sdk: true
sbom: true
clean-docs: false
signing:
enabled: true
key: "ABCD1234"
bsign:
enabled: false
scan:
enabled: true
failOn: high
export#
Параметры экспорта в репозиторий OSTree.
repository- путь к репозиторию.collection-id- идентификатор набора репозитория.generate-static-deltas- генерировать статические дельты для экономии трафика при обновлении. По умолчанию false.prune- удалять старые объекты при обновлении репозитория. По умолчанию false.
export:
repository: "./repo"
collection-id: ru.astralinux.RuntimeRepo
generate-static-deltas: true
prune: false
Полный пример#
version: "1.0"
metadata:
id: org.astralinux.Platform
name: "Astra Linux Platform"
description: "Базовая платформа Astra Linux"
version: "1.8"
arch: amd64
branch: stable
source:
type: debootstrap
debootstrap:
distribution: astralinux
suite: stable
mirror: https://download.astralinux.ru/astra/stable/1.8_x86-64/repository
components: [main, contrib, non-free]
variant: minbase
additional-repos:
- url: https://example.com/repo
codename: stable
components: [main]
key-url: https://example.com/repo/key.gpg
packages:
runtime: [libc6, libglib2.0-0, libflatpak0]
sdk: [build-essential, pkg-config]
commands:
post-install:
- "locale-gen ru_RU.UTF-8"
environment:
LANG: "ru_RU.UTF-8"
build:
sdk: true
sbom: true
clean-docs: false
signing:
enabled: true
key: "ABCD1234"
export:
repository: "./repo"
collection-id: ru.astralinux.RuntimeRepo
generate-static-deltas: true
extensions:
- name: org.astralinux.Platform.Locale
directory: share/runtime/locale
locale-subset: true