Girar/girar-nmu: различия между версиями

Материал из ALT Linux Wiki
Строка 52: Строка 52:
  girar-nmu-helper-name2path /path/to/files/SRPMS `cat names.txt` > files.txt
  girar-nmu-helper-name2path /path/to/files/SRPMS `cat names.txt` > files.txt
Обратное преобразование можно выполнить так:
Обратное преобразование можно выполнить так:
  rpmquery --queryformat '%{NAME}\n' -p `cat files.txt`
  rpmquery --queryformat '%{NAME}\n' -p `cat files.txt` > names.txt




Строка 58: Строка 58:


==== girar-nmu-prepare ====
==== girar-nmu-prepare ====
girar-nmu-prepare --changelog '- rebuild with new perl' --hook ./perl_510_upgrade.pl `cat files.txt`


==== girar-nmu-local-build ====
==== girar-nmu-local-build ====
girar-nmu-local-build `cat names.txt` -- hsh


=== утилиты для заливки NMU пакетов на сборку. ===
=== утилиты для заливки NMU пакетов на сборку. ===

Версия от 23:07, 21 ноября 2010


Знакомство с утилитами girar-nmu

утилиты предназначены для проведения NMU.

утилиты общего назначения.

Опции:

  • -b rpm репозиторий, например, -b 5.1. По умолчанию sisyphus.
  • -d локальная ветвь git. Позволяет менять имя используемой локальной ветви git

для тех команд, гд это имеет смысл.

girar-get-upload-method <name>

Позволяет быстро узнать, как нужно заливать указанный пакет: через src.rpm или через git tag в git/gear репозитории.

Примеры:

$ girar-get-upload-method xmms       
srpm
$ girar-get-upload-method -b p5 hplip
git

girar-fetch-build-commit

Удобна, когда на ваш пакет сделан NMU и чужой NMU commit нужно втянуть в ваш репозиторий. По умолчанию, за имя локальной ветки берется имя rpm репозитория (sisyphus или значение опции -b).

Пример:

hplip.git $ girar-fetch-build-commit 
From git://git.altlinux.org/gears/h/hplip
  1359385..1970106  sisyphus   -> sisyphus

girar-clone-build-commit <name>

Клонирует репозиторий для name с git://git.altlinux.org/gears/, Устанавливает локальную ветвь git (по умолчанию master) на последний build commit.

утилиты для подготовки NMU.

Эти утилиты принимают либо список путей к файлам, либо список %{NAME} src.rpm файлов. Для удобства утилита girar-nmu-helper-name2path позволяет преобразовать список имен в список путей к файлам.

girar-nmu-helper-name2path /path/to/files/SRPMS `cat names.txt` > files.txt

Обратное преобразование можно выполнить так:

rpmquery --queryformat '%{NAME}\n' -p `cat files.txt` > names.txt


girar-nmu-sort-transaction

girar-nmu-prepare

girar-nmu-prepare --changelog '- rebuild with new perl' --hook ./perl_510_upgrade.pl `cat files.txt`


girar-nmu-local-build

girar-nmu-local-build `cat names.txt` -- hsh

утилиты для заливки NMU пакетов на сборку.

girar-nmu-task-add

girar-nmu-task-add [-t taskid] `cat names.txt`

Добавляет пакеты, подготовленные с помощью girar-nmu-prepare, на сборку в указанный task. Полученный task надо запустить на сборку вручную с помощью

ssh git.alt task run

girar-nmu-task-for-each

girar-nmu-task-for-each `cat names.txt`

В отличие от girar-nmu-task-add запускает на сборку пакеты автоматически каждый пакет в отдельной task.

Основные опции:

  • -t task ID.
  • -H git.alt alias. По умолчанию, git.alt.
  • -n | -g | -r. Опции подписывания rpm пакетов. По умолчанию, -g (использовать gpg agent).
-g) использовать gpg agent (внутренняя обвязка rpm-sign-gpg-agent)
-n) если нет gpg agent, но ключ без passphrase - (внутренняя обвязка rpm-sign-no-passphrase)
-r) использовать обычный rpm --sign, требует постоянного ввода ключа с клавиатуры.
  • -p git repository prefix. По умолчанию, 00-tmp-.

особенности сборки из git

00-tmp- -- это префикс по умолчанию, (можно поменять опцией -p) который добавляется перед именем временного git репозитория, из которого будет производиться сборка. Этот временный репозиторий создается прямо перед добавлением пакета в task и сразу же удаляется.

Поверьте, вам этот временный репозиторий не нужен. Если сборка удалась, то изменения вы втянете, запустив girar-fetch-build-commit или, при желании, руками из git://git.altlinux.org/gears/${name:0:1}/${name}.git refs/heads/sisyphus, если же сборка не удалась, то они и не нужны.

Почему удалять?

  • иначе у майнтайнера на 100-м -- 200-м пакете банально кончится дисковая квота на git.alt. Проходили эти грабли.
  • иначе каталог майнтайнера на git.alt, который делал nmu, засоряется машинным генератом.

Почему префикс?

  • чтобы случайно не испортить на git.alt рабочий репозиторий.
  • чтобы на git.alt легко отличать, где рабочие репозитории,а где машинный генерат.

внутренние утилиты подписывания rpm пакетов

NMU часто требуют подписывать сотни пакетов. Для git тегов спасает gpg agent, но rpm не умеет с ним работать напрямую. Чтобы не отсохли руки вводить pass phrase, в состав girar-nmu включены обвязки rpm-sign-gpg-agent и rpm-sign-no-passphrase. Эти обвязки вызываются утилитами автоматически и наружу не видны, кроме как в виде опций, но их можно использовать и как самостоятельные приложения.

Использование:

rpm-sign-gpg-agent <--addsign | --resign> *.src.rpm

rpm-sign-gpg-agent заставляет rpm использовать gpg agent для подписи. rpm-sign-no-passphrase удобен для удаленной работы. Когда вы заходите на удаленную песочницу, ваш gpg agent остается на локальной машине. Если ключ с пассфразой, то никуда не деться, надо настраивать локальный gpg agent. Но если пассфразы нет, gpg agent не нужен. Но rpm все равно попросит нажать Enter. так вот, rpm-sign-no-passphrase нажмет Enter за вас.

Использование girar-nmu utils на примере обновления perl

План будет следующий: I. Получаем список пакетов, сортируем транзакцию. II. Готовим новые версии. III. Добавляем в task.

cd /var/ftp/pub/Linux/ALT
girar-nmu-helper-sort-transaction --mark '^libperl\.so\.5\.' \
/Sisyphus/files/SRPMS /Sisyphus/files/noarch/RPMS /Sisyphus/files/i586/RPMS \
> names
girar-nmu-helper-name2path /Sisyphus/files/SRPMS `cat names` > files
girar-nmu-prepare --changelog '- rebuild with new perl' --hook ./perl_510_upgrade.pl `cat files`