Cоздание и обновление OSTree-репозитория NiceOS

1 Введение

1.1 Общие сведения

OSTree применяется в НАЙС.ОС для управления версиями базовой системы по модели «версия как артефакт». Обновление в данной модели рассматривается как получение и активация целостного состояния (версии) корневой файловой системы, а не как последовательное наложение изменений пакетами на текущее состояние.

1.2 Термины, используемые в разделе

OSTree
Механизм хранения и доставки версий корневой файловой системы в виде «коммитов» (снимков состояния).
Коммит (снимок)
Зафиксированное состояние дерева файловой системы, идентифицируемое хэш-значением (SHA).
Ref (ветка)
Именованная ссылка на актуальный коммит выбранного профиля и архитектуры. Используется клиентами для получения обновлений.
Treefile
Файл описания состава системы (пакеты, источники, параметры сборки), используемый при формировании дерева.
Файлы репозиториев (.repo)
Конфигурационные файлы источников RPM-пакетов для сборки дерева, используемые сборочным инструментарием.

1.3 Назначение OSTree-репозитория в НАЙС.ОС

  • централизованное распространение версий базовой системы и обновлений;
  • воспроизводимая сборка базового дерева из заданного состава пакетов;
  • обеспечение штатных откатов и исключение частичных обновлений за счёт активации подготовленной версии.

1.4 Назначение сценария mkostreerepo

Сценарий mkostreerepo предназначен для унификации и автоматизации формирования OSTree-репозитория: подготовка каталога репозитория и кэша, управление входными конфигурациями, выполнение сборки дерева, публикация индекса summary. Результатом выполнения является актуализированный репозиторий, готовый к подключению клиентами.


2 Предварительные знания и требования

2.1 Требуемые знания

  • понятия: пакетный менеджер, репозиторий, releasever, architecture;
  • базовые навыки работы в командной строке;
  • понимание различия между «сборкой версии» и «установкой/обновлением версии».

2.2 Требуемые программные компоненты

  • ostree;
  • rpm-ostree;
  • (при необходимости) утилита установки зависимостей в используемой среде выполнения.

2.3 Эксплуатационные требования

  • сетевой доступ к источникам RPM-пакетов;
  • права записи в рабочие каталоги репозитория и кэша;
  • при установке зависимостей — права суперпользователя.

3 Процесс формирования OSTree-репозитория

3.1 Общая схема

Формирование OSTree-репозитория представляет собой последовательность операций: описание состава системы в treefile, определение источников пакетов через файлы .repo, выбор целевого ref, формирование коммита (снимка) и обновление индекса summary. Клиентские системы получают обновления по ref при появлении нового коммита и актуализированного summary.

3.2 Treefile: описание состава системы

Treefile описывает параметры сборки и состав базового дерева. Ключевые поля: osname, releasever, ref, перечень используемых источников пакетов (repos) и список пакетов (packages).

{
  "osname": "niceos",
  "releasever": "5.2",
  "ref": "niceos/5.2/x86_64/minimal",
  "repos": ["niceos", "niceos-updates", "niceos-extras"],
  "packages": ["bash", "systemd", "linux"]
}

3.3 Файлы .repo: определение источников пакетов

Файлы .repo определяют источники RPM-пакетов. Идентификаторы репозиториев в секциях (например, [niceos]) должны совпадать со значениями, указанными в массиве repos treefile. Несоответствие приводит к ошибкам разрешения источников пакетов.

[niceos]
name=NiceOS $releasever ($basearch)
baseurl=https://p3.niceos.ru/niceos/$releasever/core
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-NICEOS

3.4 Ref: именование веток репозитория

Ref определяет логическую ветку репозитория для конкретного профиля и архитектуры. Рекомендуется использовать стабильную схему именования:

osname/releasever/arch/profile
# пример:
niceos/5.2/x86_64/minimal

3.5 Коммит и summary: публикация результата

Каждая успешная сборка формирует новый коммит (снимок). Индекс summary обновляется для публикации актуального состояния рефов.

ostree summary --repo=/path/to/repo --update
ostree summary -v --repo=/path/to/repo

4 Функции сценария mkostreerepo

4.1 Назначение

Сценарий mkostreerepo автоматизирует формирование OSTree-репозитория и обеспечивает воспроизводимость операций в ручных запусках и в CI/CD. Сценарий выполняет подготовку структуры каталогов, проверку наличия необходимых утилит, подготовку входных конфигураций, сборку дерева, создание коммита и обновление summary.

4.2 Параметры запуска (обзор)

  • --repopath — корневая рабочая директория (внутри формируются repo/ и cache/);
  • --treefile — путь к treefile; при отсутствии может формироваться минимальный treefile;
  • --reposdir — каталог с файлами .repo;
  • --osname, --releasever, --arch, --ref — параметры идентификации целевого ref;
  • --repo-mode — режим инициализации репозитория (для публикации рекомендуется archive-совместимый режим).
mkostreerepo --repopath=/srv/niceos/ostree --verbose

mkostreerepo \
  --repopath=/srv/niceos/ostree \
  --treefile=./my-tree.json \
  --reposdir=/srv/niceos/repos.d \
  --verbose

4.3 Структура рабочих каталогов

/srv/niceos/ostree/
├─ repo/     # OSTree-объекты, refs, summary
├─ cache/    # кэш сборки
└─ *.repo    # конфигурации источников пакетов (при размещении в рабочем каталоге)

4.4 Проверка наличия утилит

rpm-ostree --version
ostree --version

4.5 Инициализация репозитория

При первичном запуске создаётся новый репозиторий. Для публикации по HTTP/HTTPS используется режим, ориентированный на распространение.

ostree --repo=/srv/niceos/ostree/repo init --mode=archive-z2

4.6 Сборка дерева и формирование коммита

Сборка выполняется инструментарием rpm-ostree по treefile с использованием источников RPM-пакетов, определённых в .repo. Результатом является новый коммит, записанный в указанный ref.

rpm-ostree compose tree --unified-core \
  --cachedir=/srv/niceos/ostree/cache \
  --repo=/srv/niceos/ostree/repo \
  /srv/niceos/ostree/niceos-base.json

4.7 Обновление summary

ostree summary --repo=/srv/niceos/ostree/repo --update
ostree summary -v --repo=/srv/niceos/ostree/repo

5 Контроль результатов

5.1 Контроль наличия ref

ostree --repo=/srv/niceos/ostree/repo refs

5.2 Контроль истории коммитов

ostree --repo=/srv/niceos/ostree/repo log niceos/5.2/x86_64/minimal
ostree --repo=/srv/niceos/ostree/repo rev-parse niceos/5.2/x86_64/minimal

5.3 Контроль публикации через summary

ostree summary -v --repo=/srv/niceos/ostree/repo

6 Дальнейшие действия

6.1 Публикация репозитория

  • разместить каталог repo/ на сервере HTTP/HTTPS;
  • обеспечить доступ к файлу summary и объектам репозитория;
  • при использовании HTTPS обеспечить корректную настройку TLS.

6.2 Подключение клиентов

Клиентская система должна быть настроена на получение обновлений по целевому ref. Конкретные процедуры подключения и переключения фиксируются в эксплуатационной документации и применяются в соответствии с регламентом сопровождения.

6.3 Обновления и откаты

  • обновление клиента выполняется как получение и активация новой версии;
  • возврат выполняется штатным механизмом отката к предыдущей версии.

7 Типовые неисправности

7.1 Unknown rpm-md repository

Причина: отсутствует .repo с требуемым идентификатором или ID репозитория не совпадает с указанным в treefile. Корректирующие действия: проверить каталог .repo, имена секций и соответствие массиву repos treefile.

7.2 Отсутствие утилит ostree/rpm-ostree

Причина: не установлены обязательные компоненты. Корректирующие действия: установить требуемые пакеты и повторить запуск.


8 Рекомендации по эксплуатации

  • рекомендуется хранить treefile в системе контроля версий и применять изменения через процедуру согласования;
  • рекомендуется вести раздельные контуры репозиториев (staging/production) и публиковать изменения после проверок;
  • рекомендуется применять защищённую доставку (HTTPS) и контроль целостности цепочки поставки RPM-пакетов;
  • рекомендуется фиксировать версии и параметры публикации в эксплуатационных регламентах.

9 Заключение

Применение OSTree в НАЙС.ОС обеспечивает версионную модель обновлений базовой системы, повышает предсказуемость эксплуатации, упрощает контроль изменений и снижает трудоёмкость восстановления за счёт штатных механизмов отката. Сценарий mkostreerepo предназначен для воспроизводимой подготовки и актуализации репозиториев, используемых для поставки версий системы.

Комментарии
Обратная связь

Нашли неточность или хотите предложить улучшение статьи? Напишите нам.

Отправить отзыв

НАЙС.ОС включена в реестр российского ПО (Реестровая запись №30128 от 22.10.2025).
Реестровая запись произведена на основании поручения Министерства цифрового развития, связи и массовых коммуникаций Российской Федерации от 22.10.2025 по протоколу заседания экспертного совета от 09.10.2025 №872пр
Свидетельство о государственной регистрации программы для ЭВМ №2025612870 от 05 февраля 2025 г.
Процессы разработки и поставки выстроены так, чтобы поддерживать требования ФСТЭК/ГОСТ и быть пригодными для оценки/сертификационных работ (при определении области и объекта сертификации).