📘 ПАМЯТКА: Работа с системой автоматической сборки пакетов (ABF)

Для начинающих майнтейнеров
Версия: универсальная
Дата обновления: Март 2026


1. 🔍 ЧТО ТАКОЕ СИСТЕМА АВТОМАТИЧЕСКОЙ СБОРКИ

ABF (Automatic Build Farm) — это система автоматической сборки пакетов для дистрибутивов на основе RPM.

✅ Преимущества:

ПреимуществоОписание
🧪 Чистая средаСборка происходит в изолированном контейнере
🤖 АвтоматизацияНе нужно устанавливать зависимости локально
📦 ПубликацияГотовые пакеты автоматически попадают в репозиторий
📜 ИсторияВсе сборки сохраняются с логами
👥 Совместная работаВозможность командной разработки

🔄 Как работает система:

1. Вы создаёте проект в системе сборки
2. Загружаете spec-файл и исходные материалы
3. Система запускает сборку в чистой среде
4. После успешного завершения пакет попадает в ваш репозиторий
5. Пользователи устанавливают пакет через менеджер пакетов

2. 📝 РЕГИСТРАЦИЯ И ПОДГОТОВКА

Шаг 2.1: Регистрация аккаунта

  1. Откройте веб-сайт системы сборки
  2. Нажмите «Войти» или «Регистрация»
  3. Создайте учётную запись или войдите через существующую
  4. Подтвердите адрес электронной почты ✅

Шаг 2.2: Создание SSH-ключа

# Генерация ключа
ssh-keygen -t ed25519 -C "ваш@email.com"

# Нажимайте Enter для значений по умолчанию

# Просмотр публичного ключа
cat ~/.ssh/id_ed25519.pub

Шаг 2.3: Добавление ключа в систему

  1. Войдите в веб-интерфейс
  2. Перейдите в Настройки профиляSSH Keys
  3. Нажмите «Добавить ключ»
  4. Вставьте содержимое публичного ключа
  5. Сохраните изменения 💾

Шаг 2.4: Установка инструментов командной строки

# Установите клиент для работы с системой сборки
sudo dnf install -y git пакет-клиента-сборки

# Настройте систему контроля версий
git config --global user.name "Ваше Имя"
git config --global user.email "ваш@email.com"

Шаг 2.5: Авторизация в системе

# Запустите авторизацию
клиент-сборки login

# Введите учётные данные при запросе

3. 🏗️ СОЗДАНИЕ ПРОЕКТА

Шаг 3.1: Создание репозитория проекта

  1. Войдите в веб-интерфейс системы сборки
  2. Нажмите «Создать проект»
  3. Заполните обязательные поля:
ПолеПример значения
Имя проектаимя-вашего-пакета
ОписаниеКраткое описание функционала
Тип проектаrpm-build
Целевая веткаrosa13, rosa14 или другая
  1. Нажмите «Создать» 🎯

Шаг 3.2: Стандартная структура проекта

имя-проекта/
├── SPECS/
│   └── имя-пакета.spec
├── SOURCES/
│   ├── исходный-архив.tar.gz
│   ├── патч-файл.patch
│   └── дополнительные-файлы
├── .abf/
│   └── конфигурация-сборки
└── README.md

4. 📁 ПОДГОТОВКА ФАЙЛОВ ДЛЯ ЗАГРУЗКИ

Шаг 4.1: Создание локальной рабочей папки

# Создайте структуру папок для проекта
mkdir -p ~/abf/имя-проекта/{SPECS,SOURCES}
cd ~/abf/имя-проекта

Шаг 4.2: Подготовка spec-файла

# Скопируйте готовый spec-файл в проект
cp ~/путь/к/файлу/имя-пакета.spec ~/abf/имя-проекта/SPECS/

# Проверьте содержимое файла
cat ~/abf/имя-проекта/SPECS/имя-пакета.spec

Шаг 4.3: Подготовка исходных материалов

cd ~/abf/имя-проекта/SOURCES

# Скачайте исходный архив
wget https://источник/архив-версии.tar.gz -O имя-пакета-версия.tar.gz

# Проверьте целостность и размер файла
ls -lh имя-пакета-версия.tar.gz

Шаг 4.4: Дополнительные конфигурационные файлы

При необходимости подготовьте:

ФайлНазначение
.abf.ymlПараметры сборки для системы
README.mdДокументация проекта
.gitignoreСписок игнорируемых файлов

Шаг 4.5: Создание конфигурационного файла сборки

cat > ~/abf/имя-проекта/.abf.yml << 'EOF'
name: имя-пакета
description: Описание функционала пакета
maintainer: ваш@email.com
priority: contrib
type: rpm
branch: целевая-ветка
EOF

5. 📤 ЗАГРУЗКА В СИСТЕМУ СБОРКИ

Шаг 5.1: Инициализация репозитория контроля версий

cd ~/abf/имя-проекта
git init
git add .
git commit -m "Initial commit: первая версия пакета"

Шаг 5.2: Настройка удалённого репозитория

# Получите URL репозитория из веб-интерфейса
# Пример для SSH:
git remote add origin git@адрес-системы:ваш-логин/имя-проекта.git

# Или для HTTPS:
git remote add origin https://адрес-системы/ваш-логин/имя-проекта.git

Шаг 5.3: Отправка файлов в систему

# Отправка файлов в удалённый репозиторий
git push -u origin main

# При необходимости укажите ветку:
git push -u origin master

Шаг 5.4: Проверка успешной загрузки ✅

  1. Откройте проект в веб-интерфейсе
  2. Перейдите на вкладку «Files» или «Файлы»
  3. Убедитесь в наличии всех необходимых файлов:
  • SPECS/имя-пакета.spec
  • SOURCES/исходный-архив.tar.gz

6. 🚀 ЗАПУСК СБОРКИ

Шаг 6.1: Запуск через веб-интерфейс

  1. Откройте проект в системе сборки
  2. Перейдите на вкладку «Builds» или «Сборки»
  3. Нажмите «Start Build» или «Запустить сборку»
  4. Настройте параметры:
ПараметрРекомендуемое значение
Веткацелевая-ветка дистрибутива
Архитектураx86_64 или all
Тип сборкиrelease
  1. Подтвердите запуск 🎯

Шаг 6.2: Запуск через консоль

# Запустить сборку проекта
клиент-сборки build start ваш-логин/имя-проекта

# Проверить текущий статус
клиент-сборки build status ваш-логин/имя-проекта

# Просмотреть логи сборки
клиент-сборки build log ваш-логин/имя-проекта

Шаг 6.3: Статусы сборки

СтатусЗначение
pendingОжидание в очереди на сборку
buildingПроцесс сборки выполняется
succeeded✅ Сборка завершена успешно
failed❌ Ошибка в процессе сборки
cancelledСборка отменена пользователем

Шаг 6.4: Анализ логов сборки

Через веб-интерфейс:

  1. Откройте проект → раздел сборок
  2. Выберите интересующую сборку
  3. Изучите логи по этапам процесса

Чересс консоль:

клиент-сборки build log ваш-логин/имя-проекта --last

7. 📦 ПУБЛИКАЦИЯ В РЕПОЗИТОРИЙ

Шаг 7.1: Создание персонального репозитория

  1. После успешной сборки перейдите в раздел «Repository»
  2. Нажмите «Create Repository»
  3. Укажите параметры:
ПараметрЗначение
Имя репозиторияpersonal или другое
Веткацелевая-ветка дистрибутива
Компонентcontrib, main или другой
Архитектураx86_64 или all

Шаг 7.2: Добавление пакета в репозиторий

  1. Перейдите в «Repository»«Manage Packages»
  2. Выберите успешную сборку из списка
  3. Нажмите «Add to Repository»
  4. Подтвердите добавление ✅

Шаг 7.3: Получение адреса репозитория

  1. Откройте раздел «Repository»
  2. Нажмите «Repository URL» или аналогичную кнопку
  3. Скопируйте URL для подключения пользователями

Пример формата адреса:

https://адрес-системы/ваш-логин/имя-репозитория/ветка/архитектура

Шаг 7.4: Инструкция для пользователей по подключению

# Создать файл конфигурации репозитория
sudo nano /etc/yum.repos.d/персональный-репозиторий.repo

# Добавить конфигурацию:
[персональный-репозиторий]
name=Персональный репозиторий
baseurl=https://адрес-системы/ваш-логин/имя-репозитория/ветка/архитектура
enabled=1
gpgcheck=0

# Обновить кэш менеджера пакетов
sudo dnf makecache

# Установить пакет
sudo dnf install имя-пакета

8. 🔄 ОБНОВЛЕНИЕ ПАКЕТА

Шаг 8.1: Подготовка новой версии spec-файла

# Откройте spec-файл для редактирования
nano ~/abf/имя-проекта/SPECS/имя-пакета.spec

# Обновите номер версии и релиза:
Version:        новая-версия
Release:        1

# Добавьте запись в журнал изменений:
%changelog
* Дата Ваше Имя <ваш@email.com> - новая-версия-1
- Описание изменений
- Исправленные проблемы

Шаг 8.2: Обновление исходных материалов

cd ~/abf/имя-проекта/SOURCES

# Скачайте новую версию исходников
wget https://источник/новая-версия.tar.gz -O имя-пакета-новая-версия.tar.gz

# Удалите старую версию (опционально)
rm имя-пакета-старая-версия.tar.gz

Шаг 8.3: Отправка изменений в систему

cd ~/abf/имя-проекта
git add .
git commit -m "Update to version новая-версия"
git push

Шаг 8.4: Запуск сборки обновлённой версии

  1. Откройте проект в веб-интерфейсе
  2. Перейдите в раздел сборок
  3. Запустите новую сборку
  4. Дождитесь завершения процесса ⏱️

9. ❌ ЧАСТЫЕ ОШИБКИ И РЕШЕНИЯ

Ошибка 1: Ошибка аутентификации

Текст ошибки:

fatal: Authentication failed

Решение: 🔧

# Проверьте работу SSH-ключа
ssh -T git@адрес-системы

# При необходимости пересоздайте ключ
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519
# Добавьте новый публичный ключ в настройки аккаунта

Ошибка 2: Исходный файл не найден при сборке

Текст ошибки:

error: Bad source: имя-файла: No such file

Решение: 🔧

  1. Убедитесь, что файл размещён в папке SOURCES/
  2. Проверьте соответствие имени файла и директивы Source0 в spec-файле
  3. Загрузите файл через систему контроля версий:
   git add SOURCES/имя-файла
   git commit -m "Add source archive"
   git push

Ошибка 3: Превышен лимит размера файла

Текст ошибки:

File too large (max XXXMB)

Решение: 🔧

  1. Используйте внешние ссылки в spec-файле:
   Source0: https://источник/архив-версии.tar.gz
  1. Разбейте большой архив на части
  2. Используйте механизм загрузки больших файлов, если поддерживается

Ошибка 4: Длительное ожидание в очереди

Симптомы:

  • Статус pending сохраняется более 30 минут ⏱️

Решение: 🔧

  1. Дождитесь освобождения очереди сборки
  2. Проверьте статус системы на главной странице
  3. Попробуйте запустить сборку в менее загруженное время
  4. Обратитесь в поддержку при длительных задержках

Ошибка 5: Пакет не отображается в репозитории

Симптомы:

  • Сборка завершена успешно, но менеджер пакетов не находит пакет

Решение: 🔧

# Обновите кэш репозиториев
sudo dnf clean all
sudo dnf makecache

# Проверьте список подключённых репозиториев
dnf repolist

# Проверьте доступность пакета
dnf list available | grep имя-пакета

Ошибка 6: Конфликт имени пакета

Текст ошибки:

Package name conflicts with existing package

Решение: 🔧

  1. Измените имя пакета в spec-файле на уникальное
  2. Используйте префикс для различения (например: custom-имя-пакета)
  3. Запросите права на сопровождение существующего пакета при необходимости

10. ⭐ ЛУЧШИЕ ПРАКТИКИ

10.1: Структура проекта

✅ Рекомендуемая структура:
имя-проекта/
├── SPECS/имя-пакета.spec
├── SOURCES/исходный-архив.tar.gz
├── SOURCES/патч-исправления.patch
├── .abf.yml
└── README.md

❌ Не рекомендуется:
имя-проекта/
├── spec-файл.txt
├── архив.tar
└── заметки.txt

10.2: Именование версий

ПравильноНеправильно
Version: 1.0.0Version: 1.0
Release: 1Release: custom1
пакет-1.0.0.tar.gzпакет.tar.gz

10.3: Ведение журнала изменений

✅ Правильный формат:
%changelog
* Дата Имя Фамилия <email> - версия-релиз
- Описание внесённых изменений
- Список исправленных ошибок

* Предыдущая-дата Имя Фамилия <email> - старая-версия-1
- Начальная версия пакета

❌ Не рекомендуется:
%changelog
* обновил пакет
* исправил ошибки

10.4: Тестирование перед публикацией

# 1. Выполните локальную сборку
rpmbuild -ba SPECS/имя-пакета.spec

# 2. Установите и протестируйте результат
sudo dnf install RPMS/архитектура/имя-пакета-*.rpm
имя-пакета --версия

# 3. Только после успешного тестирования загружайте в систему сборки

10.5: Документирование проекта

Рекомендуется добавлять файл README.md:

# Имя пакета для дистрибутива

## Описание
Краткое описание функционала и назначения пакета.

## Версия
номер-версии

## Зависимости
- Зависимость 1
- Зависимость 2

## Сборка
Пакет собран через систему автоматической сборки.

## Установка
sudo dnf install имя-пакета

## Контакты
- Сопровождающий: ваш@email.com
- Отчёт об ошибках: ссылка-на-трекер

## Лицензия
Тип-лицензии

11. ✅ БЫСТРЫЙ СТАРТ (ЧЕК-ЛИСТ)

Первоначальная настройка (выполняется один раз):

  • [ ] Зарегистрировать учётную запись в системе сборки
  • [ ] Сгенерировать SSH-ключ для аутентификации
  • [ ] Добавить публичный ключ в настройки профиля
  • [ ] Установить клиентские инструменты и git
  • [ ] Настроить git (имя пользователя и email)
  • [ ] Выполнить авторизацию в системе

Для каждого нового пакета:

  • [ ] Подготовить и протестировать spec-файл локально
  • [ ] Скачать исходные материалы в папку SOURCES/
  • [ ] Создать локальную папку проекта
  • [ ] Инициализировать git-репозиторий
  • [ ] Добавить файлы в индекс: git add .
  • [ ] Создать коммит с описанием: git commit -m "Описание"
  • [ ] Настроить удалённый репозиторий
  • [ ] Отправить файлы в систему: git push
  • [ ] Запустить сборку через веб-интерфейс
  • [ ] Дождаться успешного завершения ✅
  • [ ] Добавить пакет в персональный репозиторий
  • [ ] Протестировать установку конечным пользователем

При обновлении существующего пакета:

  • [ ] Обновить поля Version и Release в spec-файле
  • [ ] Добавить запись в %changelog
  • [ ] Загрузить новые исходные материалы
  • [ ] Зафиксировать изменения: git add . && git commit && git push
  • [ ] Запустить новую сборку

📎 ПРИЛОЖЕНИЕ А: СПРАВОЧНИК КОМАНД

Работа с системой контроля версий

# Клонировать существующий проект
git clone git@адрес-системы:логин/проект.git

# Проверить статус изменений
git status

# Просмотреть внесённые изменения
git diff

# Отменить локальные изменения файла
git checkout -- имя-файла

# Просмотреть историю коммитов
git log --oneline

Работа с клиентом системы сборки

# Авторизация в системе
клиент-сборки login

# Завершение сеанса
клиент-сборки logout

# Список доступных проектов
клиент-сборки project list

# Создание нового проекта
клиент-сборки project create имя-проекта

# Запуск сборки
клиент-сборки build start логин/проект

# Проверка статуса сборки
клиент-сборки build status логин/проект

# Просмотр логов последней сборки
клиент-сборки build log логин/проект --last

# Загрузка готовых пакетов
клиент-сборки download логин/проект

Управление репозиториями

# Список репозиториев
клиент-сборки repo list

# Создание нового репозитория
клиент-сборки repo create имя-репозитория ветка

# Добавление пакета в репозиторий
клиент-сборки repo add имя-репозитория логин/проект

# Удаление пакета из репозитория
клиент-сборки repo remove имя-репозитория логин/проект

📎 ПРИЛОЖЕНИЕ Б: ШАБЛОНЫ КОНФИГУРАЦИОННЫХ ФАЙЛОВ

Шаблон конфигурационного файла сборки

name: имя-пакета
description: Краткое описание пакета
maintainer: ваш@email.com
priority: contrib
type: rpm
branch: целевая-ветка
build_options:
  skip_checks: false
  skip_debuginfo: false

Шаблон файла документации

# Имя пакета

## Описание
Краткое описание функционала и назначения.

## Версия
номер-версии

## Зависимости
- Зависимость 1
- Зависимость 2

## Сборка
Пакет собран через систему автоматической сборки.

## Установка
sudo dnf install имя-пакета

## Контакты
- Сопровождающий: ваш@email.com
- Трекер ошибок: ссылка-на-трекер

## Лицензия
Тип-лицензии

Шаблон файла исключений

# Файлы и папки, игнорируемые системой контроля версий
*.rpm
*.src.rpm
*.log
*~
.DS_Store
BUILD/
BUILDROOT/
RPMS/
SRPMS/

📎 ПРИЛОЖЕНИЕ В: ПОЛЕЗНЫЕ РЕСУРСЫ

РесурсНазначение
Веб-интерфейс системы сборкиУправление проектами и сборками
Документация системыРуководства и справочные материалы
Форум сообществаОбсуждение вопросов и помощь
Каталог пакетовПросмотр доступных пакетов
Монитор сборокОтслеживание статуса процессов

📎 ПРИЛОЖЕНИЕ Г: КАНАЛЫ ПОДДЕРЖКИ

КаналНазначение
Форум сообществаВопросы по сборке и сопровождению
Чат сообществаОперативная помощь и обсуждение
Электронная почтаТехнические вопросы и отчёты
Система отслеживанияОтчёты об ошибках и предложения

🎯 ЗАКЛЮЧЕНИЕ

Система автоматической сборки — мощный инструмент для сопровождения пакетов.

Ключевые рекомендации:

  1. Тестируйте локально перед загрузкой в систему сборки
  2. Ведите журнал изменений для каждой новой версии
  3. Документируйте свои проекты для других участников
  4. Следите за обновлениями зависимостей и стандартов
  5. Отвечайте на обращения пользователей и коллег

🛤️ Путь развития сопровождающего:

Начинающий → Первый пакет → Регулярные обновления → Поддержка → Опытный майнтейнер

🎉 УДАЧИ В СОПРОВОЖДЕНИИ ПАКЕТОВ!


Документ подготовлен для: универсального использования
Формат: Руководство для начинающих сопровождающих
Версия документа: 1.0
Дата: Март 2026

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *