23 апреля 2026 № 1 (2026)

ROSARIUM

газета советского программного инженера

Публикация и передача пакета дальше

Как довести пакет от личной сборки до общего репозитория или ревью.

На этой странице

После успешной сборки в личном репозитории следующий шаг — решить, куда пакет пойдёт дальше: останется в личном репозитории, попадёт в общий репозиторий сообщества или будет передан на сопровождение более широкому кругу мейнтейнеров.

Практический смысл этой страницы не в том, чтобы как можно быстрее «передать пакет дальше», а в том, чтобы передавать уже понятный, проверяемый и воспроизводимый пакет.

Путь пакета

1. Личный репозиторий (username_personal)
   └── Тестирование и доработка
   
2. Запрос на передачу дальше
   └── Review от мейнтейнеров или координаторов

3. Общий репозиторий / группа сопровождения
   └── Пакет доступен более широкому кругу пользователей

Требования к пакету

Перед запросом на включение убедитесь:

Качество сборки

  • ✅ Пакет успешно собирается на ABF
  • ✅ Желательно есть и локальная пересборка SRPM в mock
  • rpmlint не показывает ошибок (предупреждения допустимы)
  • ✅ Пакет устанавливается и работает
  • ✅ Зависимости корректны

SPEC-файл

  • ✅ Лицензия указана правильно (SPDX-идентификатор)
  • ✅ URL актуален
  • ✅ Summary и Description информативны
  • ✅ Changelog ведётся
  • ✅ Используются макросы вместо жёстких путей

Юридические аспекты

  • ✅ Лицензия позволяет распространение
  • ✅ Нет патентных ограничений
  • ✅ Нет проприетарных компонентов (для main)

Процесс передачи пакета дальше

Шаг 1: Убедиться в качестве

# Последняя проверка
rpmlint mypackage.spec
rpmlint ~/rpmbuild/RPMS/*/*.rpm

# Желательно повторить сборку в чистой среде локально
mock -r <профиль_из_/etc/mock> --rebuild ~/rpmbuild/SRPMS/mypackage-*.src.rpm

# Тестовая установка
sudo dnf install --repofrompath=test,https://abf-downloads.rosalinux.ru/username_personal/repository/ROSA_PLATFORM/x86_64/main/release/ mypackage
# где ROSA_PLATFORM = rosa13 (или другое имя платформы из ABF)

Шаг 2: Написать запрос

Напишите в один из каналов:

Telegram: t.me/rosalinux

Запрос на ревью пакета:
- Пакет: mypackage
- Версия: 1.0.0
- Описание: Краткое описание программы
- Сборка: https://abf.rosa.ru/build_lists/12345
- Проект: https://abf.rosa.ru/username_personal/mypackage

Форум: forum.rosa.ru

Создайте тему в разделе для разработчиков.

Шаг 3: Review

Мейнтейнер проверит:

  • Корректность SPEC-файла
  • Соответствие стандартам
  • Безопасность (нет подозрительного кода)
  • Работоспособность

Возможны замечания — исправьте и сообщите.

Шаг 4: Определить дальнейшую судьбу пакета

После одобрения возможны разные сценарии:

  1. пакет остаётся в вашем личном репозитории, но получает рекомендацию для использования;
  2. пакет переносится в общий групповой репозиторий сообщества;
  3. пакет передаётся в более официальный сопровождаемый проект;
  4. вы сами становитесь одним из основных сопровождающих.

После включения

Ваши обязанности

Как сопровождающий (maintainer) вы:

  • Обновляете пакет при выходе новых версий upstream
  • Исправляете баги, о которых сообщают пользователи
  • Реагируете на уязвимости безопасности (CVE)
  • Отвечаете на вопросы по пакету

Рабочий процесс после принятия

# Клонировать проект из общей группы
git clone git@abf.rosa.ru:community/mypackage.git
cd mypackage

# Обновить версию
# ... редактирование SPEC, обновление исходников ...

git add .
git commit -m "Update to 1.1.0"
git push

# Запустить сборку на ABF

Если не можете сопровождать

Если у вас нет времени на поддержку:

  1. Сообщите в сообщество
  2. Найдите нового мейнтейнера
  3. Или пакет будет помечен как «orphaned» (брошенный)

Если используется общий репозиторий сообщества

В некоторых сценариях сообщество использует отдельный репозиторий, который пользователи подключают вручную или через вспомогательный пакет:

# Установить пакет community-repos (если он существует для вашей платформы)
sudo dnf install community-repos

# Или добавить вручную
sudo tee /etc/yum.repos.d/rosa-community.repo << 'EOF'
[community-release]
name=ROSA Community Release
# замените ROSA_PLATFORM на имя платформы из ABF (например, rosa13)
baseurl=https://abf-downloads.rosalinux.ru/community/repository/ROSA_PLATFORM/$basearch/main/release/
enabled=1
gpgcheck=1
# gpgkey=... (используйте ключи, которые устанавливает community-repos)
EOF

# Обновить кеш
sudo dnf makecache

Уровни репозиториев

РепозиторийКто может публиковатьДля чего
username_personalВыРазработка, тестирование
community / общий групповойОдобренные мейнтейнерыПакеты от сообщества
import / официальный сопровождаемый проектКоманда ROSA и ответственные мейнтейнерыОсновные пакеты дистрибутива

Подписание пакетов

Пакеты в официальных репозиториях подписаны GPG:

# Проверка подписи
rpm -K mypackage.rpm
# mypackage.rpm: digests signatures OK

В личном репозитории пакеты не подписаны.

Checklist перед запросом

  • Пакет успешно собирается на ABF
  • Желательно проходит и mock-сборка SRPM
  • Протестирована установка и запуск
  • rpmlint не показывает ошибок
  • Лицензия указана корректно (SPDX)
  • Changelog содержит записи
  • Готов поддерживать пакет

Проверьте понимание

  1. Какие требования к пакету для включения в community?
  2. Куда написать запрос на включение?
  3. Что проверяет мейнтейнер при review?
  4. Какие обязанности у сопровождающего пакета?
  5. Как пользователи подключают репозиторий community?

Следующий модуль: Продвинутые техники