Сборка пакета с РЕАЛЬНОГО НУЛЯ
Введение
Дано:
- Hasher, gear, git.alt и другие инструменты настроены должным образом. - готового src.rpm нет; - ветки на git.alt нет; - исходники - либо тарболл "где-то там, далеко-далеко", либо гитхаб, либо вообще снапшот с sourceforge.
Вывод - веселья мало не будет.
Приступим!
Общий алгоритм сборки
0. Лезем за исходниками - либо в тарболле, либо напрямик с гита:
git clone <адрес репозитория> wget <ссылка на тарболл> или же скачиваем снапшот с того же sourceforge 0.0. Распаковываем тарболл 0.1. Приводим название каталога с исходниками к виду "ИмяПакета"
1. Переходим в созданный репозиторий
cd ИмяПакета
2. Инициализируем локальный репозиторий:
git init
3. Создаём каталог для файла правил gear:
mkdir -pv .gear
4. Создаём файл с правилами для gear:
touch .gear/rules
5. Заполняем созданный файл согласно полиси
nano .gear/rules. Самый простой вариант tar.gz: . - исходники упаковываются со сжатием copy: *.patch - скопировать в выходной тарболл патчи (по тому же принципу копируем и файлы локализации и пр.)
6. Создаём или кладём к исходникам спек-файл
cp ИмяПакета.spec ИмяПакета/ИмяПакета.spec 6.0. Причёсываем спек: cleanup_spec спек.spec 6.1. Правим спек: Source: %name-%version.tar.gz %setup -n %name-%version
7. Говорим git'у, что нужные файлы добавлены:
git add .
8. Зовём gear записать изменения
gear-commit -a
9. В открывшемся текстовом редакторе, в самом начале, пишем описание коммита:
"Initial commit"
A. Пробуем связаться с удалённым сервером (и получаем по лбу, ибо доступа пока что нету :-) )
git remote add origin git.alt:packages/ИмяПакета.git
B. На удалённый репозиторий добавляется всё, что у нас есть, и закрепляется:
git push origin master
B.0. ВНИМАНИЕ! Перед добавлением подписанного тэга стоит проверить, собирается ли пакет вообще. Для этого попробуем собрать пакет локально и без отправки в Сизиф (ключей-то нету...): gear --hasher -- hsh --no-sisyphus-check Не собралось? Не беда, исправляем ошибку и запускаем сборку, но уже без необходимости собирать песочницу заново: gear --hasher -- hsh-rebuild --no-sisyphus-check
C. Создаём подписанный тэг (см. "настройка по ключам и прочему")
git tag -s -m "ИмяПакета-0.1-alt1" ИмяПакета-0.1-alt1
D. Закрепляем тэг:
git push origin --tags
См. также
Git.alt/Путь пакета в сизиф
Читать до полного просветления:
О стратегии сборки RPM пакетов
ALT Packaging HOWTO