Введение
gear
(Get Every Archive from git package Repository) - система для
работы с произвольными архивами программ. В качестве хранилища данных
gear
использует git,
что позволяет работать с полной историей проекта.
Создание gear-репозитория путём импорта созданного ранее srpm-пакета(ов).
Пусть у нас есть srpm-пакет foobar-1.0-alt1.src.rpm
, и, к примеру, в нём
находится следующее:
$ rpmquery -pl foobar-1.0-alt1.src.rpm
foobar-1-fix.patch
foobar-2-fix.patch
foobar.icon.png
foobar-1.0.tar.bz2
foobar-plugins.tar.gz
Для того чтобы сделать из него gear-репозиторий, нам нужно:
-
Создать каталог, в котором будет располагаться наш архив:
$ mkdir foobar $ cd foobar
-
Создать новый git-репозиторий:
$ git init Initialized empty Git repository in .git/
Получившийся пустой git-репозиторий будет выглядеть примерно следующим образом:
$ ls -dlog .* drwxr-xr-x 4 4096 Aug 12 34:56 . drwxr-xr-x 6 4096 Aug 12 34:56 .. drwxr-xr-x 8 4096 Aug 12 34:56 .git
Таким образом, git-репозиторий готов для импорта srpm-пакета.
-
В проекте
gear
есть утилитаgear-srpmimport
, предназначенная для автоматизации импортирования srpm-пакета в git-репозиторий:$ gear-srpmimport foobar-1.0-alt1.src.rpm Committing initial tree deadbeefdeadbeefdeadbeefdeadbeefdeadbeef gear-srpmimport: Imported foobar-1.0-alt1.src.rpm gear-srpmimport: Created master branch
После выполнения импорта git-репозиторий будет выглядеть примерно следующим образом:
$ ls -Alog drwxr-xr-x 1 4096 Aug 12 34:56 .gear drwxr-xr-x 1 4096 Aug 12 34:56 .git -rw-r--r-- 1 6637 Aug 12 34:56 foobar.spec drwxr-xr-x 3 4096 Aug 12 34:56 foobar drwxr-xr-x 3 4096 Aug 12 34:56 foobar-plugins -rw-r--r-- 1 791 Aug 12 34:56 foobar-1-fix.patch -rw-r--r-- 1 3115 Aug 12 34:56 foobar-2-fix.patch -rw-r--r-- 1 842 Aug 12 34:56 foobar.icon.png
Итак, пакет импортирован в репозиторий. Для импортированного пакета формируется список правил, по которым будет создаваться архив. Правила по умолчанию располагаются в файле
.gear/rules
:$ cat .gear/rules copy: *.patch copy: *.png tar.bz2: foobar tar.gz: foobar-plugins name=foobar-plugins base=
Прежние версии
gear-srpmimport
по умолчанию располагали правила в файле.gear-rules
. -
При необходимости в файл правил можно вносить изменения. Например, можно убрать сжатие исходников (соответствующие изменения следует вносить и в spec-файл).
Создание gear-репозитория на основе готового git-репозитория.
-
Создать и добавить в git-репозиторий spec-файл.
-
Создать и добавить в git-репозиторий файл с правилами
.gear/rules
.
Сборка пакета из gear-репозитория.
-
Сборка пакета при помощи
hasher(7)
осуществляется командойgear-hsh
:$ gear-hsh
-
Чтобы собрать старый пакет, который не содержит определения тэга Packager в spec-файле, следует отключить соответствующую проверку:
$ gear-hsh --no-sisyphus-check=gpg,packager
-
Сборка пакета при помощи
rpmbuild(8)
осуществляется командойgear-rpm
:$ gear-rpm -ba
Фиксация изменений в репозитории.
-
Для того, чтобы сделать commit очередной сборки пакета, имеет смысл воспользоваться утилитой
gear-commit
, которая помогает сформировать список изменений на основе записи в spec-файле:$ gear-commit -a
-
Прежде чем сделать первый commit, не забудьте сконфигурировать ваш адрес. Это можно сделать глобально несколькими способами, например, прописав соответствующие значения в
~/.gitconfig
:$ git config --global user.name 'Your Name' $ git config --global user.email '<login>@altlinux.org'
Для отдельно взятого git-репозитория сконфигурировать адрес можно, прописав соответствующие значения в
.git/config
этого git-репозитория:$ git config user.name 'Your Name' $ git config user.email '<login>@altlinux.org'