Манифест среды выполнения#

Манифест - это 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