Краткое руководство по сборке пакета

Материал из ALT Linux Wiki


Данное HOWTO поможет вам самостоятельно создать свой пакет в дистрибутивах ALT Linux. Расширенную информацию о тонкостях сборки пакетов и их сопровождению вы можете найти в разделах Руководства и Справочники.

Подготовка к сборке пакета

Помимо желания собрать пакет вам необходимо:

  • Исходный код программы или библиотеки
  • Доступ к репозиторию
  • Сборочная среда

Исходный код

Исходный код для пакета вы можете скачать из Интернета. Положим, вы скачали архив с исходным кодом foo-1.2.3.tar.gz

Доступ к репозиторию

Для того, чтобы собрать пакет, потребуется доступ к репозиторию (будут нужны зависимые пакеты). Идеальный вариант — копия Sisyphus или необходимого бранча. Однако можно использовать и удалённый репозиторий. Организация доступа к репозиторию будет рассмотрена ниже.

Сборочная среда

1. Установите программы для сборки пакетов:

apt-get install rpm-build gear

2. Подготовьте место на жёстком диске. Минимум 2 Гб. Крайне рекомендуется производить сборку на файловой системе tmpfs — скорость сборки может вырасти в 3 раза! tmpfs использует память и файл подкачки, поэтому заранее подготовьте большой раздел (или, что хуже, файл) подкачки. Проверьте размер tmpfs в файле /etc/fstab:

tmpfs           /tmp                    tmpfs   nosuid,size=2300m               0 0

В данном случае параметр size=2300m устанавливает размер файловой системы в 2300 Мб (2,3 Гб). Если вы вносили изменения, то запустите

mount /tmp -o remount

3. Настройте .rpmmacros:

Создайте в домашнем каталоге файл .rpmmacros (обязательна точка в начале) примерно такого содержания:

%_packager Vasya Pipkin <pupkin@altlinux.org>

В этом файле также можно указать ключи подписи пакетов (если вы собираетесь выкладывать пакеты в репозитории), макросы сборки и прочие полезные параметры.

Репозиторий Gear

Подготовьте репозиторий Gear/Git. Это необходимое условие для правки уже существующих пакетов и просто удобно чтобы хранить ваши изменения. Рекомендуется создать отдельный каталог для всех репозиториев Gear.

1. Если вы создаёте новый пакет «с нуля», для нашего пакета выполните в этом общем каталоге для сборки:

mkdir foo
cd foo
git-init

В каталоге foo создайте файл .gear-rules следующего содержимого:

tar.gz: foo

Распакуйте архив с исходным кодом:

gear-update -c /path/to/foo-1.2.3.tar.gz foo

Напишите .spec-файл (спек). Спек можно составить по примерам.

2. Если вы хотите собрать новую версию пакета существующего пакета, то клонируйте репозиторий Gear пакета из Sisyphus. Для этого в браузере откройте http://git.altlinux.org/archive/ для адреса Git (в подкаталоге по первому символу имени). Например, пакет kmymoney2 располагается в http://git.altlinux.org/archive/k/kmymoney2.git/. Получить последнюю версию можно командой (вместо http:// пишите git://, а расширение .git можно опустить):

git-clone git://git.altlinux.org/archive/k/kmymoney2/

Обновите исходный код из скаченного архива (из созданного каталога):

gear-update /path/to/kmymoney2-0.9.2.tar.bz2 kmymoney2

Обновите версию и changelog в файле .spec. Для автоматического добавления даты в changelog можно запустить команду add_changelog и изменить подпись под созданной строкой в разделе %changelog спека.

Фиксирование изменений

Чтобы зафиксировать все ваши изменения, выполните:

gear-commit -a

Появится окно редактора (по умолчанию — vi, переопределить его можно в переменной среды окружения EDITOR: export EDITOR=mcedit) с версией и текстом последней записи changelog. Если нужно, поправьте текст, сохраните изменения и выйдите из редактора. Строки, начинающиеся с символа # будут проигнорированы. Если выйти без сохранения, то изменения зафиксированы не будут.

Сборка

И, наконец, сборка!

gear-hsh /tmp/

Среда сборки попытается собрать пакет в изолированной среде Hasher. Если есть ошибки, то исправьте их и обязательно зафиксируйте изменения. В случае удачной сборки будут созданы пакеты:

  • в каталоге /tmp/repo/SRPMS.hasher/ — исходные пакеты .src.rpm
  • в каталоге /tmp/repo/i586/RPMS.hasher/ — собранные бинарные пакеты

Примечание: архитектура (i586) может отличаться названием в зависимости от настроек Hasher и сборочного компьютера.

Внимание! При перезагрузке tmpfs очищается, поэтому скопируйте пакеты в безопасное место.