Использование 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 |
| Собрать пакет в локальном hasher | zoryn 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 из spec | zoryn commit | Обычный локальный git commit |
| Клонировать пакет из Sisyphus | zoryn clone <пакет> | Публичное чтение по HTTPS с git.altlinux.org |
| Проверить наличие новой upstream-версии | zoryn check version | Публичные upstream-данные |
| Найти / проверить spec | zoryn spec, zoryn check spec | Локальные файлы |
То есть весь пакетный цикл правка → сборка → проверка доступен офлайн.
Что требует статуса мейнтейнера¶
Эти операции идут через официальный сборочный сервер ALT и требуют SSH-ключа, зарегистрированного на gitery/gyle, плюс ACL на пакет:
| Задача | Команда | Что делает |
|---|---|---|
| Отправить ветку и тег в gitery | zoryn submit | git push по SSH на gitery.altlinux.org |
| Создать / запустить сборочное задание | zoryn task new / task run | ssh 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¶
Тот же цикл мейнтейнера up → submit, но без 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-репозиторий уже есть, нужна одна команда:
При локальной сборке пакеты остаются в репозитории 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— работают ровно как описано, поверх того же локального процесса, который вы уже знаете.