Редактирование: Girar/girar-nmu

Перейти к: навигация, поиск

Внимание: Вы работаете как анонимный пользователь. Ваш IP-адрес будет записан в историю изменений этой страницы.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
{{DISPLAYTITLE:girar/girar-nmu}}
+
{{DISPLAYTITLE:git.alt/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__
Строка 16: Строка 13:
 
* {{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> ====
Строка 30: Строка 27:
 
  $ 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 ====
Строка 64: Строка 44:
 
Устанавливает локальную ветвь 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
Строка 88: Строка 54:
 
  rpmquery --queryformat '%{NAME}\n' -p `cat files.txt` > names.txt
 
  rpmquery --queryformat '%{NAME}\n' -p `cat files.txt` > names.txt
  
Эти утилиты универсальные, так как работают напрямую с rpm, минуя индексы.
 
Поэтому же они и достаточно медленные.
 
  
Если NMU проводится на пакеты в репозитории ALTLinux, то гораздо быстрее будут
+
==== girar-nmu-sort-transaction ====
специализированные утилиты из [[Sisyphus/Tools/Repolist]].
 
  
 
==== girar-nmu-prepare ====
 
==== girar-nmu-prepare ====
  
{{cmd|girar-nmu-prepare}} является основной утилитой пакета girar-nmu. Её простейший вызов выглядит так:
+
  girar-nmu-prepare --changelog '- rebuild with new perl' --hook ./perl_510_upgrade.pl `cat files.txt`
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, например,
Строка 142: Строка 83:
 
или, если настроен {{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 ====
Строка 197: Строка 132:
 
==== внутренние утилиты подписывания rpm пакетов ====
 
==== внутренние утилиты подписывания rpm пакетов ====
 
NMU часто требуют подписывать сотни пакетов.
 
NMU часто требуют подписывать сотни пакетов.
Для git тегов спасает [[Настройка gpg-agent|gpg agent]], но rpm не умеет с ним работать напрямую.
+
Для git тегов спасает 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.
Строка 217: Строка 152:
  
 
==== внутренние утилиты для заливки srpm на сборку. ====
 
==== внутренние утилиты для заливки srpm на сборку. ====
Утилиты {{cmd|girar-nmu-helper-*}} изначально были предназначены для внутреннего употребления и продвинутых пользователей.
+
Утилиты {{cmd|girar-nmu-helper-*}} изначально были предназначены для вутреннего употребления и продвинутых пользователей.
Однако многими из них можно пользоваться и независимо от {{cmd|girar-nmu-prepare}}.  
+
Однако мнгими из них можно пользоваться и независимо от {{cmd|girar-nmu-prepare}}.  
Приведенные ниже утилиты позволяют полностью автоматизировать отправку srpm на сборку в incoming.
+
Приведенные ниже утилиты позволяют полностью автоматизировать отправку srpm на сборку.
  
 
Добавить указанные src.rpm пакеты в task:
 
Добавить указанные src.rpm пакеты в task:
Строка 230: Строка 165:
 
== Использование girar-nmu utils на примере обновления perl ==
 
== Использование girar-nmu utils на примере обновления perl ==
  
План следующий:
+
План будет следующий:
 
I. Получаем список пакетов, сортируем транзакцию.
 
I. Получаем список пакетов, сортируем транзакцию.
 
II. Готовим новые версии.
 
II. Готовим новые версии.
 
III. Добавляем в task.
 
III. Добавляем в task.
  
  girar-nmu-sort-transaction --mark '^libperl\.so\.5\.' \
+
cd /var/ftp/pub/Linux/ALT
  /Sisyphus/files/SRPMS /Sisyphus/files/noarch/RPMS /Sisyphus/files/i586/RPMS | \
+
  girar-nmu-helper-sort-transaction --mark '^libperl\.so\.5\.' \
  grep -v '^perl$' > names.txt
+
  /Sisyphus/files/SRPMS /Sisyphus/files/noarch/RPMS /Sisyphus/files/i586/RPMS \
 +
  > 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
Строка 247: Строка 183:
 
  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]]
 
|}
 

Обратите внимание, что все добавления и изменения текста статьи рассматриваются, как выпущенные на условиях лицензии CC-BY-SA-3.0.

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)
Вики-разметка
Заголовки: 1-го: == ==, 2-го: === ===, 3-го: ==== ==== уровня.
Быстрая вставка: «» | [[]] [[|]] {{}} {{|}} [[Категория:]] [[altbug:]] <source lang=""></source> <pre></pre> <!-- -->.
Определения: {{man|}} {{lists|}} {{cmd|}} {{path|}} {{prg|}} {{pkg|}} {{term|}} {{span||}} {{altbug|}}
Выделение: ''italics'', '''bold''', <tt>моноширинный</tt>, <code>код</code>.
Списки: * ненумерованный список, ** вложенный список, # нумерованный список, ## вложенный нумерованный список, *# вложенный смешанный список, ;список :определений.
Verbatim: Пробел в начале строки или <pre>Явный тэг</pre>
Ссылки: [http://www.altlinux.ru/ внешние], [[Main Page|внутренние]], [http://altlinux.ru], [[Main Page]]
Шаблоны: {{Crap}} {{D}} {{Policy}} {{DraftPolicy}} {{Merge|}} {{Улучшение}} {{Тимовец|}}