Публикация и передача пакета дальше
Как довести пакет от личной сборки до общего репозитория или ревью.
На этой странице
После успешной сборки в личном репозитории следующий шаг — решить, куда пакет пойдёт дальше: останется в личном репозитории, попадёт в общий репозиторий сообщества или будет передан на сопровождение более широкому кругу мейнтейнеров.
Практический смысл этой страницы не в том, чтобы как можно быстрее «передать пакет дальше», а в том, чтобы передавать уже понятный, проверяемый и воспроизводимый пакет.
Путь пакета
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: Определить дальнейшую судьбу пакета
После одобрения возможны разные сценарии:
- пакет остаётся в вашем личном репозитории, но получает рекомендацию для использования;
- пакет переносится в общий групповой репозиторий сообщества;
- пакет передаётся в более официальный сопровождаемый проект;
- вы сами становитесь одним из основных сопровождающих.
После включения
Ваши обязанности
Как сопровождающий (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
Если не можете сопровождать
Если у вас нет времени на поддержку:
- Сообщите в сообщество
- Найдите нового мейнтейнера
- Или пакет будет помечен как «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 содержит записи
- Готов поддерживать пакет
Проверьте понимание
- Какие требования к пакету для включения в community?
- Куда написать запрос на включение?
- Что проверяет мейнтейнер при review?
- Какие обязанности у сопровождающего пакета?
- Как пользователи подключают репозиторий community?
Следующий модуль: Продвинутые техники