Руководство по сборке пакетов
Материал из Mandriva Russian Community Wiki
Содержание |
Новый мейнтейнер
После создания учётной записи не забудьте:
- Проверить, что ваш новый адрес электронной почты yourlogin@mandriva.org корректно пересылает сообщения на ваш настоящий адрес.
- Обновить адрес электронной почты на mandriva.org, таким образом ошибки по пакетам, которые вы поддерживаете, будут назначаться вам автоматически.
- Обновить адрес электронной почты учётной записи my.mandriva.com на адрес электронной почты mandriva.org. После этого вы сможете регистрироваться на maint.mandriva.com.
- Подписаться на список рассылки мейнтейнеров, отправив сообщение на sympa@mandrivalinux.org с записью «subscribe maintainers» в теле сообщения.
- Перед началом работы ознакомиться с кратким руководством мейнтейнера.
Закладки
Важные URL:
- kenobi.mandriva.com/bs — состояние сборки загруженных пакетов.
- maint.mandriva.com — база данных мейнтейнеров пакетов.
- svn.mandriva.com — веб-интерфейс к svn. Для извлечения под своей учётной записью используйте svn+ssh://login@svn.mandriva.com/svn/something.
- Эта вики и страницы политик.
Обзор процесса
Процесс выпуска пакета зависит от ряда факторов:
- ветки (cooker, 2006.0, 10.2, и т. д.);
- раздел (main, contrib);
- репозиторий;
- архитектура.
Cooker — это специальная ветка для разработчиков. Все мейнтейнеры могут свободно выпускать обновлённые версии пакетов, помещая их в раздел contrib. Раздел main более ограничен: лишь некоторые мейнтейнеры могут отправлять туда обновлённые версии пакетов, а новые пакеты — только с разрешения. Обычно, пакеты должны загружаться в репозиторий /release в соответствующий раздел. Репозиторий /testing предназначен для тестирования особо опасных изменений.
Репозитории стабильных релизов /release заморожены. Это означает, что вы не можете загружать туда пакеты. Репозитории /testing и /updates раздела /main, используются для обычных официальных обновлений, исправляющих проблемы безопасности, в соответствии с политикой поддержки выпущенного релиза (в основном, загрузка производится в /testing, далее, пакет должен быть одобрен командой QA и командой безопасности, которые позаботятся о переносе пакета в репозиторий /updates). Раздел /contrib аналогичен во всём за исключением того, что команда безопасности и команда QA не принимают никакого участия, и вы загружаете пакеты в /updates напрямую. Репозитории /backports обоих разделов /main и /contrib доступны для обновлений, не связанных с безопасностью и исправлением ошибок.
Две официально поддерживаемые архитектуры — i586 и x86_64. Необходимо убедиться, что пакеты собираются для всех архитектур корректно. Также есть несколько других архитектур. Для получения более подробной информации обратитесь к странице порты.
Технические подробности
Настройка среды
Прежде всего необходимо настроить окружение сборки RPM, следуя RPM Howto. Настройка цифровой подписи GPG не является необходимой, поскольку ваши пакеты будут автоматически подписываться официальными ключами MDK после загрузки.
Сборка в примонтированных NFS-каталогах может столкнуться с проблемами:
- проблемы блокировок;
- медленный доступ на чтение/запись.
И как следствие этого, всегда лучше совершать сборку из узла, где расположен ваш домашний каталог. Если у вас нет выбора, что касается архитектуры x86_64, вы можете переопределить соответствующий rpm-макрос:
%_builddir %(if [ "$(hostname -a)" == "deborah" ]; then echo -n "/export/$HOME/rpm/BUILD"; else echo -n "%{_topdir}/BUILD"; fi)
Установка пакетов
На cooker-системах установка двоичных пакетов осуществляется с помощью команд rurpmi и sudo:
- sudo rurpmi foo — установить или обновить пакет «foo».
- sudo rurpme foo — удалить пакет «foo».
На стабильных системах установка двоичных пакетов осуществляется с помощью стандартных команд urpm* и sudo:
- sudo urpmi foo — установить или обновить пакет «foo».
- sudo urpme foo — удалить пакет «foo».
На всех системах установка пакетов с исходниками может быть выполнена из каталога /SRPMS.
Сборка пакетов
Вы можете использовать rpm для непосредственной сборки пакета в вашем дереве сборки или использовать iurt для сборки пакета в чистом chroot (подробнее см. Iurt Howto).
Так или иначе после передачи ваши пакеты будут пересобираться с помощью iurt, и вы получите сообщение по почте, если что-то пойдёт не так.
Система репозитория: быстрый старт проведёт вас пошагово по всем этапам сборки пакета. Страница краткий обзор системы сборки также подходит для быстрого ознакомления.
Сборка пакетов для старых дистрибутивов
Для компиляции пакетов для старых версий дистрибутивов необходимо использовать iurt.
- sudo iurt2006 package.src.rpm — собрать на 2006.0.
- sudo iurt2007 package.src.rpm — собрать на 2007.0.
Если вам нужен chroot, используйте sudo iurt<версия> --shell.
Загрузка пакетов
См. Система репозитория: быстрый старт.
Очередь обрабатывается примерно каждые 5 минут. Все пакеты проходят основные проверки, например существование более новой версии, отсутствие непрерывности в истории и т. д.. Если одна из этих проверок завершается неудачно, загрузка отменяется, и вы получите список ошибок. В противном случае, пакет помещается в очередь для компиляции, ожидая перекомпиляции сборочным роботом (ботом). Если пересборка завершилась с ошибкой, вы получите сообщение с предупреждением. Если же она завершилась нормально, пакеты помещаются на сервер загрузки. В список рассылки журнала изменений будет отправлено сообщение с уведомлением. Почта журнала изменений вызывается только исходным файлом пакета.
Обзор очереди компиляции: kenobi.mandriva.com/bs
Загрузка пакета во время заморозки версии
Во время заморозки, если вы хотите загрузить пакет:
- Вы не уверены в изменениях и хотите выполнить тестирование
Загрузите его с помощью команды:
mdv-youri-submit --define section={main,contrib}/testing cooker <package>
Он появится в общедоступном хранилище, и каждый сможет протестировать его и написать вам об этом. После загрузки вы можете отправить сообщение с просьбой протестировать пакет.
Вы ДОЛЖНЫ включать ID ошибки из bugzilla в журнал изменений. При отсутствии связанных ошибок попытайтесь объяснить в чём заключалась ошибка и, если это возможно, способ её воспроизведения.
Вы должны предоставлять только пакет с исходным кодом, он будует перекомпилирован iurt и загружен, если сборка пройдёт успешно.
Текущее состояние очереди кластера на svn.mandriva.com (немного сыровато, но ничего лучше в данный момент нет).
- Вы протестировали изменение и этот пакет чрезвычайно необходим
Попросите distrib-admin (mailto:distrib-admin@mandrivalinux.org?&cc=maintainers@mandriva.com?subject=upload запрос) загрузить ваш пакет через использование на кластере:
mdv-youri-submit --define section={main,contrib}/release <package>
Пакеты-сироты
Когда мейнтейнеры Mandriva больше не хотят или не могут поддерживать пакет, они могут бросить пакет. Тогда он превращается в сиротский (т. е. пакет, который не имеет мейнтейнера).
Мейнтейнеры могут управлять состоянием поддержки своих пакетов на maintainers.mandriva.com.

