Перейти к содержанию
zoryn/ maintainer-assistant

Использование zoryn без статуса мейнтейнера

Да, собрать пакет под ALT Linux (Альт Линукс) с помощью zoryn можно и без учётной записи мейнтейнера. У zoryn нет собственного логина: каждая привилегированная операция — это обычный SSH к хостам gitery/gyle, а доступ проверяется целиком на стороне ALT (ваш SSH-ключ должен быть зарегистрирован там, и у вас должен быть ACL на пакет). Локально zoryn статус мейнтейнера нигде не проверяет, поэтому большая и полезная часть инструмента работает вообще без доступов ALT.

Эта страница — для трёх типов пользователей:

  • Сборка для себя или своего репозитория — вы собираете RPM под ALT для личного или корпоративного репозитория и не собираетесь публиковать их в Sisyphus.
  • Будущий мейнтейнер / контрибьютор — вы готовите обновление или новый пакет, чтобы передать действующему мейнтейнеру или освоить процесс перед вступлением.
  • Проверка перед публикацией — вы локально воспроизводите сборку Sisyphus, чтобы проверить патч или обновление без доступа к girar.

Что работает без статуса мейнтейнера

Всё перечисленное выполняется на вашей машине (или на ваших сборочных хостах) и не требует учётной записи ALT:

ЗадачаКомандаПочему учётка не нужна
Обновить пакет до новой upstream-версииzoryn upЛокальный пайплайн: fetch → merge → spec → changelog → build
Собрать пакет в локальном hasherzoryn buildЗапускает hsh на локальном tarball, без сети
Собрать на своём удалённом хостеzoryn build -b <имя>SSH к машине, которой вы владеете — не girar/gyle
Упаковать новую программуzoryn gen pypi2spec / gen opam2specГенерирует spec + .gear локально
Сгенерировать watch-файлzoryn gen watchЗапрос к Repology (Debian/Gentoo/Arch), публичные данные
Закоммитить изменения по changelog из speczoryn commitОбычный локальный git commit
Клонировать пакет из Sisyphuszoryn clone <пакет>Публичное чтение по HTTPS с git.altlinux.org
Проверить наличие новой upstream-версииzoryn check versionПубличные upstream-данные
Найти / проверить speczoryn spec, zoryn check specЛокальные файлы

То есть весь пакетный цикл правка → сборка → проверка доступен офлайн.

Что требует статуса мейнтейнера

Эти операции идут через официальный сборочный сервер ALT и требуют SSH-ключа, зарегистрированного на gitery/gyle, плюс ACL на пакет:

ЗадачаКомандаЧто делает
Отправить ветку и тег в giteryzoryn submitgit push по SSH на gitery.altlinux.org
Создать / запустить сборочное заданиеzoryn task new / task runssh gyle task … на сборочном сервере
Опубликовать в Sisyphus / веткуzoryn task run --commitАтомарно вливает собранные пакеты в репозиторий

Без зарегистрированного ключа и ACL эти команды завершатся ошибкой — это единственная черта, которую не-мейнтейнер перейти не может.

Что такое сборочное задание ALT Linux?

Сборочное задание (build task) — это единица работы на сборочном сервере girar/gyle ALT, а не локальная сборка. Его создают командой task new, добавляют подзадания через task add (один gear-репозиторий на теге = один пакет), и сервер собирает все подзадания вместе, в порядке зависимостей, на всех архитектурах. task run запускает сборку; task run --commit атомарно публикует результат в целевой репозиторий (Sisyphus или ветку). Задания могут зависеть друг от друга, их можно подтверждать (approve), прерывать, копировать и пересобирать. Просматривать, искать сборочные задания и следить за их статусом онлайн можно на packages.altlinux.org/tasks.

Локальная zoryn build запускает ту же сборку в hasher, но у вас на машине — и это не сборочное задание: нет сервера, нет публикации, ACL не нужен. Именно на этой границе и стоит не-мейнтейнер: собрать всё можно локально, а вот создать задание и влить его в репозиторий — только с учётной записью.

Локальные сценарии

Три типовые задачи, каждая заканчивается локальной сборкой в hasher (без submit).

Обновить существующий пакет ALT

Тот же цикл мейнтейнера upsubmit, но без submit:

# Клонировать текущие исходники пакета из Sisyphus (публично, без учётки)
zoryn clone libfoo
cd libfoo

# Обновить до новой upstream-версии: fetch → merge → spec → changelog → build
zoryn up

# Собрать в локальном hasher
zoryn build

# Зафиксировать изменение по changelog из spec
zoryn commit

Там, где мейнтейнер запустил бы zoryn submit, вы останавливаетесь после локальной сборки. Полученные RPM и обновлённый .gear — ваши: установить, выложить в свой репозиторий или передать мейнтейнеру.

Упаковать новую программу для ALT

Сгенерируйте spec из upstream-исходника, затем соберите:

# Из проекта на PyPI — клонирует upstream-репозиторий и пишет .gear/<имя>.spec
zoryn gen pypi2spec requests
cd requests

# (или из opam-пакета: `zoryn gen opam2spec dune --clone`, чтобы ещё и склонировать,
#  либо `zoryn gen opam2spec dune` внутри уже существующего gear-репозитория)

zoryn spec find          # найти сгенерированный spec и отредактировать его
zoryn build              # собрать в локальном hasher
zoryn commit

Для языка, под который у zoryn нет генератора, напишите spec вручную и сразу переходите к zoryn build. Добавьте watch-файл через zoryn gen watch, если хотите отслеживать будущие upstream-релизы.

Собрать пакет из существующего gear

Если gear-репозиторий уже есть, нужна одна команда:

cd mypackage
zoryn build              # локальная сборка в hasher

При локальной сборке пакеты остаются в репозитории hasher ({hasher_dir}/repo/{arch}/RPMS.hasher); сборка на удалённом билдере скачивает их в {git_root}/hasher_out/. Флаг zoryn build -B p11 собирает под стабильную ветку, -b <билдер> выбирает конкретный hasher.

Сборка на своих машинах

Удалённый билдер в zoryn — это просто хост, к которому вы подключаетесь по SSH, чтобы запустить hsh; к girar/gyle он отношения не имеет и учётной записи ALT не требует — нужен только SSH-доступ к этой машине. Так не-мейнтейнер может собирать под архитектуры, которых нет на рабочей станции (ARM64, i586, RISC-V, e2k), и запускать несколько сборок параллельно.

Добавление билдеров, параллельные локальные hasher'ы и мультиархитектурные фермы подробно описаны в руководстве Сборочная ферма — ничто из этого не требует статуса мейнтейнера.

Что это даёт

  • Воспроизведение сборок Sisyphus локально — тот же hsh-chroot, что и на официальном сервере, поэтому пакет, который собрался у вас, соберётся и там.
  • Мультиархитектурность на своём железе — проверка сборок под ARM64 / i586 / RISC-V без какой-либо инфраструктуры ALT.
  • Полный пайплайн up без прав — автоматический merge, правка версии в spec и changelog, а не просто «сырая» сборка.
  • CI и приватные репозитории — вписать zoryn build в конвейер, чтобы наполнять личный или корпоративный ALT-репозиторий.
  • Освоить процесс до вступления — отработать точь-в-точь мейнтейнерский workflow, чтобы после получения учётки submit и task были единственным новым шагом.

Требования и оговорки

Сборочные ноды — локальные и удалённые — должны работать под ALT Linux: сборка идёт через hasher, инструмент ALT, который собирает каждый пакет в своём chroot. Настройка — в кратком руководстве по hasher.

Локальной сборке в hasher нужен настроенный hasher-priv на вашей машине (потребуется root на этой машине):

apt-get install hasher bubblewrap
sudo hasher-useradd            # служебные пользователи для локального hasher

Ваш пользователь должен состоять в группе hashman, а /etc/hasher-priv/user.d/<user> — разрешать mountpoint'ы, которые использует команда сборки. zoryn проверяет это перед каждой сборкой и подсказывает, что именно добавить. Полный список требований (включая удалённые хосты) — в руководстве Сборочная ферма.

Как передать результат в ALT Linux

Когда локальная работа готова, есть три пути:

  • Передать мейнтейнеру. Отдайте действующему мейнтейнеру пакета свой gear-репозиторий (или патч и собранные RPM) — он проверит и выполнит submit. Нет мейнтейнера или нужен новый пакет — заведите заявку в ALT Bugzilla.
  • Вступить в ALT Linux Team. Чтобы публиковать самому, нужно стать участником ALT Linux Team и получить ACL на пакет. Начните со страницы Join.
  • И тогда открывается submit. С SSH-ключом на gitery/gyle и ACL мейнтейнерские команды — zoryn submit и zoryn task — работают ровно как описано, поверх того же локального процесса, который вы уже знаете.