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

Материал из ALT Linux Wiki
Перейти к: навигация, поиск
(особенности сборки из git)
 
(не показано 36 промежуточных версий 3 участников)
Строка 1: Строка 1:
{{DISPLAYTITLE:git.alt/girar-nmu}}
+
{{DISPLAYTITLE:girar/girar-nmu}}
 
[[Категория:Справочники]]
 
[[Категория:Справочники]]
 +
 +
Upstream-ный репозиторий --- http://git.altlinux.org/people/viy/girar-nmu.git [https://lists.altlinux.org/pipermail/devel/2015-November/200351.html]; собирается в [[Sisyphus]] как пакет {{pkg|girar-nmu}}.
 +
  
 
__TOC__
 
__TOC__
Строка 13: Строка 16:
 
* {{cmd|-b rpm репозиторий}}, например, {{cmd|-b 5.1}}. По умолчанию {{cmd|sisyphus}}.
 
* {{cmd|-b rpm репозиторий}}, например, {{cmd|-b 5.1}}. По умолчанию {{cmd|sisyphus}}.
 
* {{cmd|-d локальная ветвь git}}. Позволяет менять имя используемой локальной ветви git  
 
* {{cmd|-d локальная ветвь git}}. Позволяет менять имя используемой локальной ветви git  
для тех команд, гд это имеет смысл.
+
для тех команд, где это имеет смысл.
  
 
==== girar-get-upload-method <name> ====
 
==== girar-get-upload-method <name> ====
Строка 27: Строка 30:
 
  $ girar-get-upload-method -b p5 hplip
 
  $ girar-get-upload-method -b p5 hplip
 
  git
 
  git
 +
 +
В обычном режиме, если имя пакета не найдено в репозитории, выводится srpm.
 +
Код возврата 0 (TRUE) если git, иначе код возврата >0 (FALSE).
 +
С опцией -v можно узнать дополнительные подробности, в частности,встречалось
 +
ли ранее данное имя в истории репозитория.
 +
 +
Есть отдельный режим 'missing-mode', который включается опциями <tt>-m|--missing|--show-missing</tt>.
 +
В этом режиме, если имя пакета не найдено,выводится строка missing.
 +
Код возврата 0 (TRUE) если git, 2 если srpm, 4 если missing.
 +
 +
 +
Пример:
 +
$ girar-get-upload-method --missing python
 +
git
 +
 +
$ girar-get-upload-method --missing python14
 +
missing
  
 
==== girar-fetch-build-commit ====
 
==== girar-fetch-build-commit ====
Строка 44: Строка 64:
 
Устанавливает локальную ветвь git (по умолчанию master) на  
 
Устанавливает локальную ветвь git (по умолчанию master) на  
 
последний build commit.
 
последний build commit.
 +
 +
==== girar-print-build-commit <name> ====
 +
 +
Удобна для работы совместно с командой git.alt check-git-inheritance.
 +
girar-task check-git-inheritance <task_id> <subtask_number> disable `girar-print-build-commit <name>`
 +
 +
=== утилиты для вычисления списка файлов на NMU и порядка сборки. ===
 +
 +
==== girar-nmu-sort-transaction ====
 +
* https://lists.altlinux.org/pipermail/devel/2014-December/199334.html
 +
* https://lists.altlinux.org/pipermail/devel/2012-January/193169.html
  
 
=== утилиты для подготовки NMU. ===
 
=== утилиты для подготовки NMU. ===
  
 
Эти утилиты принимают либо список путей к файлам, либо список %{NAME} src.rpm файлов.
 
Эти утилиты принимают либо список путей к файлам, либо список %{NAME} src.rpm файлов.
Для удобства утилита {{cmd|girar-nmu-helper-name2path}} позволяет преобразовать
+
 
 +
==== утилиты для преобразования списков имен в файлы и наоборот ====
 +
 
 +
Утилита {{cmd|girar-nmu-helper-name2path}} позволяет преобразовать
 
список имен в список путей к файлам.
 
список имен в список путей к файлам.
 
  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
Строка 54: Строка 88:
 
  rpmquery --queryformat '%{NAME}\n' -p `cat files.txt` > names.txt
 
  rpmquery --queryformat '%{NAME}\n' -p `cat files.txt` > names.txt
  
 +
Эти утилиты универсальные, так как работают напрямую с rpm, минуя индексы.
 +
Поэтому же они и достаточно медленные.
  
==== girar-nmu-sort-transaction ====
+
Если NMU проводится на пакеты в репозитории ALTLinux, то гораздо быстрее будут
 +
специализированные утилиты из [[Sisyphus/Tools/Repolist]].
  
 
==== girar-nmu-prepare ====
 
==== girar-nmu-prepare ====
  
  girar-nmu-prepare --changelog '- rebuild with new perl' --hook ./perl_510_upgrade.pl `cat files.txt`
+
{{cmd|girar-nmu-prepare}} является основной утилитой пакета girar-nmu. Её простейший вызов выглядит так:
 +
girar-nmu-prepare `cat files.txt`
 +
Если же удобнее работать с именами, то необходимо указать путь к src.rpms опцией {{cmd|--srpmdir}}:
 +
girar-nmu-prepare --srpmdir /path/to/SRPMS `cat names.txt`
 +
Кроме ключей, общих с другими утилитами girar-nmu, {{cmd|girar-nmu-prepare}} поддерживает ряд ключей утилиты {{cmd|srpmnmu}}.
 +
Эта утилита еще в разработке, поэтому не все ключи документированы. Поддерживаемые ключи:
 +
* {{cmd|--changelog '- message'}}
 +
* {{cmd|--hook /path/to/hook}}.
 +
Пример
 +
  girar-nmu-prepare --changelog '- rebuild with new perl' --hook ./perl_51x_fixes.pl --srpmdir /path/to/SRPMS `cat names.txt`
 +
Опцию {{cmd|--hook}} можно повторять несколько раз. Эта опция позволяет подгрузить программу на perl, которая выполнит над spec файлом
 +
дополнительные преобразования, такие как переименование макросов, изменение и добавление Requires и BuildRequires и т. д.
 +
Эти программы используют встроенный язык манипуляций спек-файлами, введение в который находится на странице [[Packaging Automation/Embedded Language]]. По вопросам написания такой программы обращайтесь к viy@.
  
 +
Для каждого src.rpm файла (или его name) указанного в качестве аргумента, {{cmd|girar-nmu-prepare}} определяет тип заливки,
 +
srpm или git tag; клонирует при необходимости git репозиторий пакета; вызывает утилиту {{cmd|srpmnmu}} над src.rpm файлом пакета
 +
или SPEC файлом в git репозитории пакета. Результат складируется
 +
как {{path|OUT.gits/name.git}} для пакетов, собираемых по git тегу, либо {{path|OUT.SRPMS/name/name-version-nmurelease.src.rpm}}
 +
для пакетов, собираемых из src.rpm файлов.
  
 +
Полученные пакеты можно пересобрать локально с помощью {{cmd|girar-nmu-local-build}} и отправить в сборочницу с помощью
 +
{{cmd|girar-nmu-task-*}}.
  
 
==== girar-nmu-local-build ====
 
==== girar-nmu-local-build ====
 
Утилита позволяет локально проверить на собираемость полученные NMU пакеты.
 
Утилита позволяет локально проверить на собираемость полученные NMU пакеты.
 +
 +
{{cmd|girar-nmu-local-build}} работает с деревом каталогов, созданным {{cmd|girar-nmu-prepare}}, поэтому ее надо
 +
либо запускать в том же каталоге, что и {{cmd|girar-nmu-prepare}}, либо явно указывать нужный путь в опциях {{cmd|-S}} и {{cmd|-G}}.
  
 
В примерах предполагается, что у вас уже настроен hasher, например,
 
В примерах предполагается, что у вас уже настроен hasher, например,
Строка 76: Строка 135:
 
Если все пакеты будут собираться в строгой очередности в одном task, то
 
Если все пакеты будут собираться в строгой очередности в одном task, то
 
нужна опция hasher'а {{cmd|--with-stuff}} и вызов будет иметь вид
 
нужна опция hasher'а {{cmd|--with-stuff}} и вызов будет иметь вид
  girar-nmu-local-build `cat names.txt` -- hsh --with-stuff
+
  girar-nmu-local-build `cat names.txt` -- hsh --with-stuff --apt-config=/etc/apt/apt.conf.SS
 
Если же пакеты будут собираться независимо, в разных task, то {{cmd|--with-stuff}} не нужна,
 
Если же пакеты будут собираться независимо, в разных task, то {{cmd|--with-stuff}} не нужна,
 
и можно добавить опцию {{cmd|-f}}, чтобы не останавливать пересборку из-за несобравшихся пакетов.
 
и можно добавить опцию {{cmd|-f}}, чтобы не останавливать пересборку из-за несобравшихся пакетов.
 
В этом случае вызов имеет вид  
 
В этом случае вызов имеет вид  
  girar-nmu-local-build -f `cat names.txt` -- hsh
+
  girar-nmu-local-build -f `cat names.txt` -- hsh --apt-config=/etc/apt/apt.conf.SS
 
или, если настроен {{path|~/.hasher/config}}, то можно просто
 
или, если настроен {{path|~/.hasher/config}}, то можно просто
 
  girar-nmu-local-build -f `cat names.txt`
 
  girar-nmu-local-build -f `cat names.txt`
 +
 +
По результатам тестовой пересборки в дерево, созданное {{cmd|girar-nmu-prepare}}, можно вносить изменения:
 +
добавлять коммиты в git репозитарии вручную и замещать сгенерированные src.rpm исправленными.
  
 
=== утилиты для заливки NMU пакетов на сборку. ===
 
=== утилиты для заливки NMU пакетов на сборку. ===
 +
 +
Эти утилиты работают с деревом каталогов, созданным {{cmd|girar-nmu-prepare}}, поэтому их надо
 +
либо запускать в том же каталоге, что и {{cmd|girar-nmu-prepare}}, либо явно указывать нужный путь в опциях {{cmd|-S}} и {{cmd|-G}}.
  
 
==== girar-nmu-task-add ====
 
==== girar-nmu-task-add ====
Строка 132: Строка 197:
 
==== внутренние утилиты подписывания rpm пакетов ====
 
==== внутренние утилиты подписывания rpm пакетов ====
 
NMU часто требуют подписывать сотни пакетов.
 
NMU часто требуют подписывать сотни пакетов.
Для git тегов спасает gpg agent, но rpm не умеет с ним работать напрямую.
+
Для git тегов спасает [[Настройка gpg-agent|gpg agent]], но rpm не умеет с ним работать напрямую.
 
Чтобы не отсохли руки вводить pass phrase, в состав girar-nmu включены обвязки
 
Чтобы не отсохли руки вводить pass phrase, в состав girar-nmu включены обвязки
 
rpm-sign-gpg-agent и rpm-sign-no-passphrase.
 
rpm-sign-gpg-agent и rpm-sign-no-passphrase.
Строка 150: Строка 215:
 
Но rpm все равно попросит нажать Enter.
 
Но rpm все равно попросит нажать Enter.
 
так вот, {{cmd|rpm-sign-no-passphrase}} нажмет Enter за вас.
 
так вот, {{cmd|rpm-sign-no-passphrase}} нажмет Enter за вас.
 +
 +
==== внутренние утилиты для заливки srpm на сборку. ====
 +
Утилиты {{cmd|girar-nmu-helper-*}} изначально были предназначены для внутреннего употребления и продвинутых пользователей.
 +
Однако многими из них можно пользоваться и независимо от {{cmd|girar-nmu-prepare}}.
 +
Приведенные ниже утилиты позволяют полностью автоматизировать отправку srpm на сборку в incoming.
 +
 +
Добавить указанные src.rpm пакеты в task:
 +
girar-nmu-helper-task-add-srpm *.src.rpm
 +
Собрать указанные src.rpm пакеты для 5.1 каждый в своей собственной task:
 +
girar-nmu-helper-task-for-each-srpm -b 5.1 *.src.rpm
 +
 +
названия утилит достаточно длинные, для регулярного использования советую сразу объявить для них alias.
  
 
== Использование girar-nmu utils на примере обновления perl ==
 
== Использование girar-nmu utils на примере обновления perl ==
  
План будет следующий:
+
План следующий:
 
I. Получаем список пакетов, сортируем транзакцию.
 
I. Получаем список пакетов, сортируем транзакцию.
 
II. Готовим новые версии.
 
II. Готовим новые версии.
 
III. Добавляем в task.
 
III. Добавляем в task.
  
cd /var/ftp/pub/Linux/ALT
+
  girar-nmu-sort-transaction --mark '^libperl\.so\.5\.' \
  girar-nmu-helper-sort-transaction --mark '^libperl\.so\.5\.' \
+
  /Sisyphus/files/SRPMS /Sisyphus/files/noarch/RPMS /Sisyphus/files/i586/RPMS | \
  /Sisyphus/files/SRPMS /Sisyphus/files/noarch/RPMS /Sisyphus/files/i586/RPMS \
+
  grep -v '^perl$' > names.txt
  > names.txt
 
  
 
  girar-nmu-helper-name2path /Sisyphus/files/SRPMS `cat names.txt` > files.txt
 
  girar-nmu-helper-name2path /Sisyphus/files/SRPMS `cat names.txt` > files.txt
Строка 168: Строка 244:
  
 
  ssh git.alt task new
 
  ssh git.alt task new
 +
ssh git.alt task add repo perl.git <tag name>
 
  girar-nmu-task-add `cat names.txt`
 
  girar-nmu-task-add `cat names.txt`
 
  ssh git.alt task run
 
  ssh git.alt task run
 +
 +
== Использование girar-nmu utils на примере ручных точечных обновлений по сообщениям repocop ==
 +
 +
=== пример 1 ===
 +
Есть python-module-pybox2d-2.3.2-alt1.diff от repocop.
 +
 +
Сначала узнаем, как заливался пакет.
 +
Для этого есть команда
 +
$ girar-get-upload-method python-module-pybox2d
 +
srpm
 +
 +
$ rpm -i /var/ftp/pub/Linux/ALT/Sisyphus/files/SRPMS/python-module-pybox2d-2.3.2-alt1.src.rpm
 +
 +
$ add_changelog pybox2d.spec
 +
 +
$ hashertarbuild -bs pybox2d.spec
 +
Записан: /home/igor/src/RPM/SRPMS/python-module-pybox2d-2.3.2-alt1.1.src.rpm
 +
$ girar-nmu-helper-task-for-each-srpm ../SRPMS/python-module-pybox2d-2.3.2-alt1.1.src.rpm
 +
spawn rpm --define __gpg_check_password_cmd /bin/true --define __gpg_sign_cmd %{__gpg} --batch --no-verbose --no-armor --use-agent --no-secmem-warning -u '%{_gpg_name}' -sbo %{__signature_filename} %{__plaintext_filename} --resign ../SRPMS/python-module-pybox2d-2.3.2-alt1.1.src.rpm
 +
Введите ключевую фразу:
 +
Ключевая фраза принята.
 +
../SRPMS/python-module-pybox2d-2.3.2-alt1.1.src.rpm:
 +
 +
Необходима фраза-пароль для доступа к секретному ключу пользователя:
 +
[...]
 +
sending incremental file list
 +
python-module-pybox2d-2.3.2-alt1.1.src.rpm
 +
[...]
 +
new task #194665: owner=viy repo=sisyphus
 +
task #194665: added #100: build srpm python-module-pybox2d-2.3.2-alt1.1.src.rpm
 +
task #194665: try #1 is AWAITING, result will be emailed to viy@altlinux.org
 +
 +
 +
$ girar-get-upload-method wesnoth
 +
git
 +
 +
cd wesnoth.git
 +
$ wget https://downloads.sourceforge.net/project/wesnoth/wesnoth/wesnoth-1.13.10/wesnoth-1.13.10.tar.bz2
 +
 +
$ gear-update ./wesnoth-1.13.10.tar.bz2 wesnoth
 +
 +
 +
{{Category navigation|title=Автоматизация работы с пакетами|category=Packaging Automation}}
 +
{| class="wide"
 +
| Разработано при поддержке [http://www.fasie.ru/ Фонда содействия развитию МП НТС] в рамках НИОКР 01201066526
 +
| [[Изображение:Logo_FASIE_preview.jpg|200px|rigft]]
 +
|}

Текущая версия на 14:53, 28 февраля 2019


Upstream-ный репозиторий --- http://git.altlinux.org/people/viy/girar-nmu.git [1]; собирается в Sisyphus как пакет girar-nmu.


Знакомство с утилитами 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

В обычном режиме, если имя пакета не найдено в репозитории, выводится srpm. Код возврата 0 (TRUE) если git, иначе код возврата >0 (FALSE). С опцией -v можно узнать дополнительные подробности, в частности,встречалось ли ранее данное имя в истории репозитория.

Есть отдельный режим 'missing-mode', который включается опциями -m|--missing|--show-missing. В этом режиме, если имя пакета не найдено,выводится строка missing. Код возврата 0 (TRUE) если git, 2 если srpm, 4 если missing.


Пример:

$ girar-get-upload-method --missing python
git
$ girar-get-upload-method --missing python14
missing

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.

girar-print-build-commit <name>[править]

Удобна для работы совместно с командой git.alt check-git-inheritance.

girar-task check-git-inheritance <task_id> <subtask_number> disable `girar-print-build-commit <name>`

утилиты для вычисления списка файлов на NMU и порядка сборки.[править]

girar-nmu-sort-transaction[править]

утилиты для подготовки 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

Эти утилиты универсальные, так как работают напрямую с rpm, минуя индексы. Поэтому же они и достаточно медленные.

Если NMU проводится на пакеты в репозитории ALTLinux, то гораздо быстрее будут специализированные утилиты из Sisyphus/Tools/Repolist.

girar-nmu-prepare[править]

girar-nmu-prepare является основной утилитой пакета girar-nmu. Её простейший вызов выглядит так:

girar-nmu-prepare `cat files.txt`

Если же удобнее работать с именами, то необходимо указать путь к src.rpms опцией --srpmdir:

girar-nmu-prepare --srpmdir /path/to/SRPMS `cat names.txt`

Кроме ключей, общих с другими утилитами girar-nmu, girar-nmu-prepare поддерживает ряд ключей утилиты srpmnmu. Эта утилита еще в разработке, поэтому не все ключи документированы. Поддерживаемые ключи:

  • --changelog '- message'
  • --hook /path/to/hook.

Пример

girar-nmu-prepare --changelog '- rebuild with new perl' --hook ./perl_51x_fixes.pl --srpmdir /path/to/SRPMS `cat names.txt`

Опцию --hook можно повторять несколько раз. Эта опция позволяет подгрузить программу на perl, которая выполнит над spec файлом дополнительные преобразования, такие как переименование макросов, изменение и добавление Requires и BuildRequires и т. д. Эти программы используют встроенный язык манипуляций спек-файлами, введение в который находится на странице Packaging Automation/Embedded Language. По вопросам написания такой программы обращайтесь к viy@.

Для каждого src.rpm файла (или его name) указанного в качестве аргумента, girar-nmu-prepare определяет тип заливки, srpm или git tag; клонирует при необходимости git репозиторий пакета; вызывает утилиту srpmnmu над src.rpm файлом пакета или SPEC файлом в git репозитории пакета. Результат складируется как OUT.gits/name.git для пакетов, собираемых по git тегу, либо OUT.SRPMS/name/name-version-nmurelease.src.rpm для пакетов, собираемых из src.rpm файлов.

Полученные пакеты можно пересобрать локально с помощью girar-nmu-local-build и отправить в сборочницу с помощью girar-nmu-task-*.

girar-nmu-local-build[править]

Утилита позволяет локально проверить на собираемость полученные NMU пакеты.

girar-nmu-local-build работает с деревом каталогов, созданным girar-nmu-prepare, поэтому ее надо либо запускать в том же каталоге, что и girar-nmu-prepare, либо явно указывать нужный путь в опциях -S и -G.

В примерах предполагается, что у вас уже настроен hasher, например,

$ cat ~/.hasher/config
workdir=/tmp/hasher
packager="`rpm --eval %packager`"
known_mountpoints=/proc

иначе опции hsh придется указывать после --, см. man girar-nmu-local-build.

Для разных типов транзакций утилиту надо вызывать по-разному. Если все пакеты будут собираться в строгой очередности в одном task, то нужна опция hasher'а --with-stuff и вызов будет иметь вид

girar-nmu-local-build `cat names.txt` -- hsh --with-stuff --apt-config=/etc/apt/apt.conf.SS

Если же пакеты будут собираться независимо, в разных task, то --with-stuff не нужна, и можно добавить опцию -f, чтобы не останавливать пересборку из-за несобравшихся пакетов. В этом случае вызов имеет вид

girar-nmu-local-build -f `cat names.txt` -- hsh --apt-config=/etc/apt/apt.conf.SS

или, если настроен ~/.hasher/config, то можно просто

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

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

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

Эти утилиты работают с деревом каталогов, созданным girar-nmu-prepare, поэтому их надо либо запускать в том же каталоге, что и girar-nmu-prepare, либо явно указывать нужный путь в опциях -S и -G.

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 за вас.

внутренние утилиты для заливки srpm на сборку.[править]

Утилиты girar-nmu-helper-* изначально были предназначены для внутреннего употребления и продвинутых пользователей. Однако многими из них можно пользоваться и независимо от girar-nmu-prepare. Приведенные ниже утилиты позволяют полностью автоматизировать отправку srpm на сборку в incoming.

Добавить указанные src.rpm пакеты в task:

girar-nmu-helper-task-add-srpm *.src.rpm

Собрать указанные src.rpm пакеты для 5.1 каждый в своей собственной task:

girar-nmu-helper-task-for-each-srpm -b 5.1 *.src.rpm

названия утилит достаточно длинные, для регулярного использования советую сразу объявить для них alias.

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

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

girar-nmu-sort-transaction --mark '^libperl\.so\.5\.' \
/Sisyphus/files/SRPMS /Sisyphus/files/noarch/RPMS /Sisyphus/files/i586/RPMS | \
grep -v '^perl$' > names.txt
girar-nmu-helper-name2path /Sisyphus/files/SRPMS `cat names.txt` > files.txt
girar-nmu-prepare --changelog '- rebuild with new perl' --hook ./perl_510_upgrade.pl `cat files.txt`
girar-nmu-local-build `cat names.txt` -- hsh --with-stuff
ssh git.alt task new
ssh git.alt task add repo perl.git <tag name>
girar-nmu-task-add `cat names.txt`
ssh git.alt task run

Использование girar-nmu utils на примере ручных точечных обновлений по сообщениям repocop[править]

пример 1[править]

Есть python-module-pybox2d-2.3.2-alt1.diff от repocop.

Сначала узнаем, как заливался пакет. Для этого есть команда

$ girar-get-upload-method python-module-pybox2d
srpm
$ rpm -i /var/ftp/pub/Linux/ALT/Sisyphus/files/SRPMS/python-module-pybox2d-2.3.2-alt1.src.rpm
$ add_changelog pybox2d.spec
$ hashertarbuild -bs pybox2d.spec
Записан: /home/igor/src/RPM/SRPMS/python-module-pybox2d-2.3.2-alt1.1.src.rpm

$ girar-nmu-helper-task-for-each-srpm ../SRPMS/python-module-pybox2d-2.3.2-alt1.1.src.rpm spawn rpm --define __gpg_check_password_cmd /bin/true --define __gpg_sign_cmd %{__gpg} --batch --no-verbose --no-armor --use-agent --no-secmem-warning -u '%{_gpg_name}' -sbo %{__signature_filename} %{__plaintext_filename} --resign ../SRPMS/python-module-pybox2d-2.3.2-alt1.1.src.rpm Введите ключевую фразу: Ключевая фраза принята. ../SRPMS/python-module-pybox2d-2.3.2-alt1.1.src.rpm:

Необходима фраза-пароль для доступа к секретному ключу пользователя: [...] sending incremental file list python-module-pybox2d-2.3.2-alt1.1.src.rpm [...] new task #194665: owner=viy repo=sisyphus task #194665: added #100: build srpm python-module-pybox2d-2.3.2-alt1.1.src.rpm task #194665: try #1 is AWAITING, result will be emailed to viy@altlinux.org


$ girar-get-upload-method wesnoth git

cd wesnoth.git $ wget https://downloads.sourceforge.net/project/wesnoth/wesnoth/wesnoth-1.13.10/wesnoth-1.13.10.tar.bz2

$ gear-update ./wesnoth-1.13.10.tar.bz2 wesnoth


Разработано при поддержке Фонда содействия развитию МП НТС в рамках НИОКР 01201066526 rigft