Краткое руководство по сборке пакета: различия между версиями
м (→Сборка: link pam_mktemp) |
м («HOWTO по сборке пакета» переименована в «Краткое руководство по сборке пакета») |
Версия от 18:54, 26 сентября 2008
Данное HOWTO поможет вам самостоятельно создать свой пакет в дистрибутивах ALT Linux.
Расширенную информацию о тонкостях сборки пакетов и их сопровождению вы можете найти в разделах Руководства и Справочники.
Подготовка к сборке пакета
Помимо желания собрать пакет вам необходимы:
- Исходный код программы или библиотеки
- Доступ к репозиторию
- Сборочная среда
Исходный код
Исходный код для пакета вы можете скачать из Интернета. Положим, вы скачали архив с исходным кодом foo-1.2.3.tar.gz
Доступ к репозиторию
Для того, чтобы собрать пакет, потребуется доступ к репозиторию (будут нужны зависимые пакеты). Идеальный вариант — копия Sisyphus или необходимого бранча. Однако можно использовать и удалённый репозиторий. Организация доступа к репозиторию будет рассмотрена ниже.
Сборочная среда
1. Установите программы для сборки пакетов:
apt-get install rpm-build gear
2. Подготовьте место на жёстком диске. Минимум 2 Гб. Крайне рекомендуется производить сборку на файловой системе tmpfs — скорость сборки может вырасти в несколько раз! tmpfs использует память и файл подкачки, поэтому заранее подготовьте большой раздел (или, что хуже, файл) подкачки. Проверьте размер tmpfs в файле /etc/fstab:
tmpfs /tmp tmpfs nosuid,size=2300m 0 0
В данном случае параметр size=2300m устанавливает размер файловой системы в 2300 Мб (2,3 Гб). Если вы вносили изменения, то запустите
mount /tmp -o remount
3. Настройте rpm:
Создайте в домашнем каталоге файл .rpmmacros (обязательна точка в начале) примерно такого содержания:
%_packager Vassily Poupkine <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 очищается, поэтому скопируйте пакеты в безопасное место.
Вместо /tmp рекомендуется использовать $TMP (/tmp/.private/$USER) для возможности работать на одном /tmp в несколько рук и не опасаясь диверсий. См. тж. control pam_mktemp.