Служба сборки/Учебное пособие

Материал из openSUSE.

Этот документ даст общее представление о Build Service и научит как собирать пакеты для разных дистрибутивов , используя этот прекрасный инструмент . Мы попытаемся показать вам все действия на примере приложения , так что Вы можете повторить все шаги для выпуска своих собственных пакетов .


Содержание

Необходимые Знания

Вы должны иметь хорошее представление о how to create RPMs, или некоторое представление о разных системах пакетов , таких как dpkg . Этот документ не может использоваться в качестве замены документации по пакетам . Существует множество HOWTOs, руководств , и книг , которые раскрывают эту тему .

Вы должны быть хорошо знакомы со средой разработки исходного кода , который использует Ваш проект для Вашего пакета . Build Service может работать с некоторыми обычными ошибками и будем надеятся сообщит Вам о проблемах в Вашем исходном коде через логфайлы и простые сообщения об ошибках . У нас есть buildservice-mailinglist , который может быть источником помощи и советов . Однако , решение о том какие патчи применять , какие использовать флаги компиляции , и т.д в конце концов остается за Вами .

Требования

Чтобы использовать Build Service Вы должны иметь учетную запись для входа . ;-)

Ваша учетная запись buildservice это таже учетная запись для wiki/bugzilla . Если Вы еще не имеете её смотрите ссылку сверху страницы чтобы создать учетную запись .

После создания учетной записи wiki/bugzilla , Вам нужно перейти на http://build.opensuse.org/ и войти под своей учетной записью. При первом входе, Вы должны будете заполнить все предоставленные формы и рассказать зачем Вы хотите присоединиться и что вы хотите внести в пакет. Затем Вы должны подождать пока Ваша учетная запись будет активирована. Пока Вы ждете, можете подписаться на рассылку opensuse-buildservice и получить короткие инструкции. Просто скажите нам свое имя и что нибудь о проекте, который Вы хотите создать и поддерживать (немного слов о Вашем умении создавать пакеты тоже будет приветствоваться).

Если Вы хотите протестировать и/или собрать Ваши пакеты дома (хорошая идея !) Вы могли бы посмотреть в SUSE Build Tutorial, чтобы получить общее представление о требованиях для среды локальной сборки.

Технология

Следующие шаги обрисуют нормальную технологию для создания проекта и добавления пакетов для этого. Конечно в реальной митуации, у Вас может не получиться какой либо шаг и Вы должны будете повторить его, пока он не пройдет удачно. Эта схема должна дать Вам просто понятие о том, чего мы добиваемся.

Мы покажем Вам два возможных способа :

  • способ Вебклиент
  • способ Командной строки клиента (мы будем использовать osc для примера )

Шаг первый - Вход

Если Вы уже имеете учетную запись Build Service , это простейший шаг .

  • Вебклиент: откройте http://build.opensuse.org/ и нажмите на одну из ссылок "List of All Projects" или "Watched Projects". Вас запросят Ваши имя пользователя и пароль для openSUSE Build Service. После этого , Вы увидите список Projects и в верхнем правом углу Вы можете найти ссылку на Ваш "Home Project". Пожалуйста перейдите по этой ссылке .
  • Командная строка: Сначала , Вы инсталлируете Commandline Client на Ваш локальный Client. Вы можете найти osc-пакеты для разных дистрибутивов в openSUSE-Tools репозитории прорамм (да: это еще Build Service Project). Выберите Ваш любимый менеджер пакетов для инсталляции osc пакета . Заметка : для SUSE Linux 9.3 или более поздней версии Вы будете нуждаться в python-elementtree и python-urlgrabber , от сюда.

После этого "cd" в директорию , которую Вы хотите использовать для файлов вашего проекта . Теперь все знакомые с SVN должны прощупать "at home": попробуйте проверить Ваш домашний проект используя

 osc checkout home:<username> 

(пожалуйста замените <username> на ваш логин ). Вас запросят имя пользователя и пароль - затем osc попробует проверить пакеты в Вашей домашнем проекте и создаст новую директорию с именем home:<username>. Вы можете редактировать Ваши настройки в файле ~/.oscrc.

Шаг Второй - Создание и Обновление пакетов

В действительности нет необходимости в старте из вашего домашнего проекта - так как Вы можете обновить пакеты прямо в существующий проект, но это хорошая точка старта и ни кто не использует домашний проект другого пользователя как зависимую сборку. Так Вы можете использовать Ваш домашний проект как "место развлечений" для теста пакетов, которые будут переправлены в другие проекты, если все будет хорошо.

  • Вебклиент: Просто нажмите на ссылку [Add Package] . Вы должны будете заполнить следующие три текстовых поля : "Name", "Title" и "Description". Просто используйте имя пакета как "Name" , краткое описание пакета как "Title" и описание как "Description".
Затем нажмите на ссылку [Add File] для добавления файлов для Вашего пакета . Вы должны будете обновить исходный код Вашего пакета и по крайней мере специальный файл .
  • Командная строка:
osc createpac home:<username> <packagename>

osc откроет временный xml файл в Вашем любимом редакторе и Вы сможете просто добавить некоторые вещи (Name, Title и Description) как было описано выше . Теперь вызовете

osc 

и Вы получите новую директорию с именем Вашего нового пакета .Для добавления файлов через командную строку , просто 'cd в новую папку , скопируйте важные файлы и вызовите

osc add *

это пометит файлы в директории для следующего утверждения . Для подтверждения файлов , вызовите

osc commit

Шаг Три - Добавление Репозиториев

Сейчас Вы должны решить для какого репозитория Вы соберете пакет .

  • Вебклиент: Просто нажмите на [Add Repository] и выберите один из возможных Distributions и Architectures.
  • Командная строка: вначале получите список возможных репозиториев
osc ls

затем отредактируйте метаданные Вашего пакета ;

osc editmeta home:<username> <packagename>

and add the repository like:

 <repository name="SUSE_Linux_Factory">
   <path project="SUSE:Factory" repository="standard" />
   <arch>x86_64</arch>
   <arch>i586</arch>
 </repository>

Заметка : repository="standard" это только для будущих расширений ( ветвей репозиториев ).

Шаг Четвертый : Сборка Вашего пакета

Обычно Ваш пакет запланирован для сборки после передачи или после изменения какого-нибудь файла . Если требуемый пакет был пересобран , Ваш пакет будет так же пересобран автоматически . Вы так же можете сделать это в ручную , если Вы нуждаетесь в этом (но пожалуйста не делайте этого слишком часто чтобы сохранить возможность сборки других пакетов ).

Локальная сборка Вашего пакета

Иногда быстрее собрать пакет на локальной машине , вместо того чтобы ждать пока это сделает buildservice. osc поддерживает локальную сборку Вашего пакета , если Ваши локальные аппаратные средства поддерживают это (на x86_64 Вы можете собрать для i586 и x86_64, на i586 только для i586).

 osc build <platform> <arch> <specfile> [--clean|--noinit]

Если Вы начнете сборку как обычный пользователь ( хорошая идея !), у Вас будет запрошен пароль администратора Вашей локальной машины . Вы можете обойти это , если Вы добавите Вашего пользователя в /etc/sudoers и отредактируете Ваш ~/.oscrc :

su-wrapper: sudo

osc соединиться с сервером-репозиторием и загрузит все нужные RPM в /var/tmp/osbuild-packagecache/<plattform>/<repository>/<arch> как кэш директорию . (Если у Вас есть готовый репозиторий , Вы можете связать RPM в этой директории чтобы избежать лишнего трафика .)

Например для репозитория openSUSE_10.2 Вы можете использовать Retail Box DVD iso как показано ниже :

 mount openSUSE-10.2.iso /mnt -o loop
 mkdir -p /var/tmp/osbuild-packagecache/openSUSE\:10.2
 ln -s /mnt/suse /var/tmp/osbuild-packagecache/openSUSE:10.2/standard

Это даст Вам репозиторий для x86 так же как и x86_64

Теперь пакеты могут быть собраны локально , как :

 osc build openSUSE_10.2 i586 beryl-core-snapshot.spec

osc создаст chroot среду в /var/tmp/osc-build-root/ и начнет собирать ваш пакет . Если у Вы сделали только маленькие изменения , Вы можете избежать пересборки с помощью опции --noinit. Если Вы увидите что ваша среда chroot не работает как надо , Вы можете включить полную пересборку с помощью опции --clean.

Как только Ваш пакет будет собран в этой среде chroot , Вы можете найти результат в /var/tmp/osc-build-root/usr/src/packages/RPMS/.

Законченный лог файл Вашей локальной сборки сохранен в /var/tmp/osc-build-root/.build.log.

Сборка Вашего пакета в build service

Сборка в build service легче чем локальная сборка - но возможно дольше .

  • Вебклиент: Если Вы хотите делать пересборку вручную , просто нажмите на [Trigger Rebuild] внизу сайта пакета .
  • Командная строка: С опциональными аргументами <repo> и <arch> , пересборка может быть лимитирована определённым репозиторием или архитектурой .
osc rebuildpac <project> <package> [<repo> [<arch>]]
Внимание
Заметьте что обычно не нужно начинать пересборку пакета как этот , потому что пересборка в большинстве случаев происходит полностью автоматически , включенная регистрацией исходных кодов. В особых случаях , порядок сборки пакетов управляется build service.


Шаг Пятый: Проверка логфайлов

Buildservice создает один большой лог файл для каждой сборки пакета .

  • Вебклиент: Просто нажмите на ссылку [Build Log] в package view.
  • Командная строка: Вы имеете много разных вариантов - основывающихся на Ваших нуждах . Если Вы находитесь в директории пакета , no packagedir must be added to the commandline.
osc prjresults [packagedir]

Shows the aggregated build results of an entire project.

osc results [packagedir]

Shows the build results of a single package.

osc log <platform> <arch>

Shows the log file from a package (you need to be inside a package directory).