Перейти к основному содержимому
Версия: v0.2.x

Хранение репозиториев

В этом разделе описана схема хранения конфигурации репозиториев Stapler. Она будет полезна тем, кто создаёт пакеты ОС с преднастроенными репозиториями Stapler, или хочет разобраться в устройстве конфигурации на низком уровне.

Зачем это нужно​

Пакеты операционной системы могут поставлять предварительно настроенные репозитории Stapler. При этом пользователь должен иметь возможность изменять параметры таких репозиториев (отключать их, менять URL и т.д.) без риска потерять настройки при обновлении пакета.

Для этого конфигурация репозиториев разделена на несколько слоёв: системный (из пакета ОС) и пользовательский (изменения пользователя). Переопределения хранятся отдельно и применяются поверх базовой конфигурации.

Схема​

Stapler читает конфигурацию репозиториев из нескольких источников в следующем порядке (каждый следующий слой перекрывает предыдущий):

  1. Системные репозитории - /usr/lib/stplr/repos.d/
  2. Пользовательские репозитории - /etc/stplr/repos.d/
  3. Переопределения - /etc/stplr/repo-overrides.d/

Если репозиторий с одним именем присутствует в нескольких слоях, приоритет имеет более поздний слой. Переопределения применяются поверх любого базового слоя.

Системные репозитории (/usr/lib/stplr/repos.d/)​

Эта директория предназначена для репозиториев, поставляемых пакетами ОС. Stapler никогда не пишет в эту директорию.

Каждый файл — это конфигурация одного репозитория в формате TOML. Имя файла (без расширения .toml) используется как имя репозитория, если поле name не задано явно.

Пример файла /usr/lib/stplr/repos.d/my-distro-repo.toml:

к сведению

Системный репозиторий нельзя удалить командой stplr repo rm. Также нельзя добавить (stplr repo add) репозиторий с тем же именем или URL, что у системного. При выполнении stplr refresh (pull) системные репозитории не перезаписываются.

Пользовательские репозитории (/etc/stplr/repos.d/)​

Пользовательские репозитории создаются командой stplr repo add и удаляются командой stplr repo rm. Каждый репозиторий хранится в отдельном файле <имя>.toml.

Пример файла /etc/stplr/repos.d/my-repo.toml:

name = 'my-repo'
url = 'https://example.com/my-repo.git'

При выполнении stplr refresh содержимое этих файлов может обновляться - например, если репозиторий поставляет свои метаданные через stapler-repo.toml.

Файлы переопределений (/etc/stplr/repo-overrides.d/)​

Команды set-disabled, set-url, set-ref не изменяют базовые файлы репозитория. Вместо этого они записывают только изменённые поля в файл переопределений. Это позволяет обновлениям базового репозитория не затирать пользовательские настройки.

Пример файла /etc/stplr/repo-overrides.d/my-repo.toml после выполнения stplr repo set-disabled my-repo true:

disabled = true

Команда stplr repo clear-overrides <имя> удаляет файл переопределений, возвращая репозиторий к параметрам базовой конфигурации.

Миграция со старого формата​

Если в /etc/stplr/stplr.toml есть записи [[repo]], команда stplr migrate перенесёт их в отдельные файлы в /etc/stplr/repos.d/ и очистит массив из stplr.toml. Миграция выполняется автоматически при запуске stplr migrate и не влияет на работу репозиториев.