Краткое руководство по сборке пакета
Материал из ALT Linux Wiki
м («HOWTO по сборке пакета» переименована в «Краткое руководство по сборке пакета») |
|||
Строка 1: | Строка 1: | ||
[[Категория:HOWTO]] | [[Категория:HOWTO]] | ||
- | Данное | + | Данное руководство поможет вам самостоятельно создать свой RPM-пакет в дистрибутивах ALT Linux. |
- | + | Больше информациx о тонкостях сборки пакетов и их сопровождению вы можете найти в разделах [[:Категория:Руководства|Руководства]] и [[:Категория:Справочники|Справочники]]. | |
== Подготовка к сборке пакета == | == Подготовка к сборке пакета == | ||
Строка 13: | Строка 13: | ||
=== Исходный код === | === Исходный код === | ||
- | Исходный код для пакета вы можете скачать из Интернета. | + | Исходный код для пакета вы можете скачать из Интернета. Предположим, вы скачали архив с исходным кодом '''foo-1.2.3.tar.gz''' |
=== Доступ к репозиторию === | === Доступ к репозиторию === | ||
- | + | Вам также потребуется доступ к репозиторию (для сборки необходимы зависимые пакеты). Идеальный вариант — [[Mirror|копия Sisyphus]] или необходимого [[Branches|бранча]]. Однако можно использовать и удалённый репозиторий. Организация доступа к репозиторию будет рассмотрена ниже. | |
=== Сборочная среда === | === Сборочная среда === | ||
Строка 23: | Строка 23: | ||
1. Установите программы для сборки пакетов: | 1. Установите программы для сборки пакетов: | ||
- | + | apt-get install rpm-build gear | |
- | 2. Подготовьте место на жёстком диске. Минимум 2 Гб. Крайне рекомендуется производить сборку на файловой системе ''tmpfs'' | + | 2. Подготовьте место на жёстком диске. Минимум 2 Гб. Крайне рекомендуется производить сборку на файловой системе ''tmpfs'' — скорость сборки может вырасти в несколько раз! tmpfs использует память и файл подкачки, поэтому заранее подготовьте большой раздел (или, что хуже, файл) подкачки. Проверьте размер tmpfs в файле /etc/fstab: |
- | + | tmpfs /tmp tmpfs nosuid,size=2300m 0 0 | |
- | В данном случае параметр '''size=2300m''' устанавливает размер файловой системы в 2300 Мб (2,3 Гб). Если вы вносили изменения, то запустите | + | В данном случае параметр '''size=2300m''' устанавливает размер файловой системы в 2300 Мб (2,3 Гб). Если вы вносили изменения, то запустите |
- | + | mount /tmp -o remount | |
3. Настройте rpm: | 3. Настройте rpm: | ||
Строка 37: | Строка 37: | ||
Создайте в домашнем каталоге файл '''.rpmmacros''' (обязательна точка в начале) примерно такого содержания: | Создайте в домашнем каталоге файл '''.rpmmacros''' (обязательна точка в начале) примерно такого содержания: | ||
- | + | %_packager Vassily Poupkine <pupkin@altlinux.org> | |
В этом файле также можно указать ключи подписи пакетов (если вы собираетесь выкладывать пакеты в репозитории), макросы сборки и прочие полезные параметры. | В этом файле также можно указать ключи подписи пакетов (если вы собираетесь выкладывать пакеты в репозитории), макросы сборки и прочие полезные параметры. | ||
Строка 43: | Строка 43: | ||
== Репозиторий Gear == | == Репозиторий Gear == | ||
- | Подготовьте репозиторий | + | Подготовьте репозиторий [[gear]] (являющийся частным случаем [[git]]-репозитория]]. Это необходимое условие для правки уже существующих пакетов и просто удобный инструмент для хранения ваших изменений. |
- | + | === Новый пакет === | |
- | + | Если вы создаёте новый пакет «с нуля», выполните следующие команды для подготовки git-репозитория: | |
- | + | ||
- | git- | + | |
- | + | mkdir foo | |
+ | cd foo | ||
+ | git init | ||
- | < | + | В директории foo, в поддиректории <tt>.gear</tt> создайте файл <tt>.gear/rules</tt> со следующим содержимым: |
+ | |||
+ | tar.gz: foo | ||
Распакуйте архив с исходным кодом: | Распакуйте архив с исходным кодом: | ||
- | + | gear-update -c /path/to/foo-1.2.3.tar.gz foo | |
Напишите .spec-файл (''спек''). Спек можно составить по [[SampleSpecs|примерам]]. | Напишите .spec-файл (''спек''). Спек можно составить по [[SampleSpecs|примерам]]. | ||
- | + | === Существующий пакет === | |
+ | |||
+ | Для изменения существующего пакета необходимо получить его исходный код. Исходный код находится в одном из двух мест: | ||
+ | |||
+ | * в gear-репозитории майнтайнера на [[git.alt]], если майнтайнер пользуется gear | ||
+ | * в архиве репозиториев сизифа, если майнтайнер gear не пользуется. | ||
+ | |||
+ | ==== Архив репозиториев сизифа ==== | ||
+ | |||
+ | Если вы хотите собрать новую версию существующего пакета, то клонируйте gear-репозиторий из Sisyphus. Для этого в браузере откройте '''http://git.altlinux.org/archive/''' для адреса Git (в подкаталоге по первому символу имени). Например, пакет kmymoney2 располагается в http://git.altlinux.org/archive/k/kmymoney2.git. Получить последнюю версию можно командой (вместо http:// пишите git://, а расширение .git можно опустить): | ||
<pre>git-clone git://git.altlinux.org/archive/k/kmymoney2</pre> | <pre>git-clone git://git.altlinux.org/archive/k/kmymoney2</pre> | ||
- | Обновите исходный код из | + | == Обновление исходного кода == |
+ | |||
+ | Обновите исходный код из скачанного архива (команда выполняется в gear-репозитории): | ||
- | + | gear-update /path/to/kmymoney2-0.9.2.tar.bz2 kmymoney2 | |
- | Обновите версию и changelog в | + | Обновите версию и changelog в .spec-файле (вручную, в разделе <tt>%changelog</tt> или с помощью утилиты <tt>add_changelog</tt>). |
== Фиксирование изменений == | == Фиксирование изменений == | ||
Строка 75: | Строка 88: | ||
Чтобы зафиксировать все ваши изменения, выполните: | Чтобы зафиксировать все ваши изменения, выполните: | ||
- | + | gear-commit -a< | |
- | Появится окно редактора (по | + | Появится окно редактора (по умолчанию — vi, вызываемый редактор определяется переменной окружения EDITOR, многие начинающие предпочитают export EDITOR=mcedit) с версией и текстом последней записи changelog. Если нужно, поправьте текст, сохраните изменения и выйдите из редактора. Строки, начинающиеся с символа <tt>#</tt>, будут проигнорированы. Если выйти без сохранения, то изменения зафиксированы не будут. |
== Сборка == | == Сборка == | ||
Строка 83: | Строка 96: | ||
И, наконец, сборка! | И, наконец, сборка! | ||
- | + | gear-hsh $TMP/ | |
- | Среда сборки попытается собрать пакет в изолированной среде [[Hasher]]. Если | + | Среда сборки попытается собрать пакет в изолированной среде [[Hasher]]. Если в процессе сборки возникнут ошибки — исправьте их и обязательно зафиксируйте изменения. В случае удачной сборки будут созданы пакеты: |
- | * в каталоге <tt>$TMP/repo/SRPMS.hasher/</tt> | + | * в каталоге <tt>$TMP/repo/SRPMS.hasher/</tt> — исходные пакеты .src.rpm |
- | * в каталоге <tt>$TMP/repo/i586/RPMS.hasher/</tt> | + | * в каталоге <tt>$TMP/repo/i586/RPMS.hasher/</tt> — собранные бинарные пакеты |
Примечание: архитектура (i586) может отличаться названием в зависимости от настроек Hasher и сборочного компьютера. | Примечание: архитектура (i586) может отличаться названием в зависимости от настроек Hasher и сборочного компьютера. | ||
Строка 94: | Строка 107: | ||
Внимание! При перезагрузке tmpfs очищается, поэтому скопируйте пакеты в безопасное место. | Внимание! При перезагрузке tmpfs очищается, поэтому скопируйте пакеты в безопасное место. | ||
- | Вместо /tmp | + | Вместо /tmp можно использовать $TMP (/tmp/.private/$USER) для возможности работать на одном /tmp в несколько рук и не опасаясь диверсий. См. тж. <tt>control [[pam_mktemp]]</tt>. |
Версия 16:06, 26 сентября 2008
Данное руководство поможет вам самостоятельно создать свой RPM-пакет в дистрибутивах ALT Linux.
Больше информациx о тонкостях сборки пакетов и их сопровождению вы можете найти в разделах Руководства и Справочники.
Содержание |
Подготовка к сборке пакета
Помимо желания собрать пакет вам необходимы:
- Исходный код программы или библиотеки
- Доступ к репозиторию
- Сборочная среда
Исходный код
Исходный код для пакета вы можете скачать из Интернета. Предположим, вы скачали архив с исходным кодом 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-репозитория]]. Это необходимое условие для правки уже существующих пакетов и просто удобный инструмент для хранения ваших изменений.
Новый пакет
Если вы создаёте новый пакет «с нуля», выполните следующие команды для подготовки git-репозитория:
mkdir foo cd foo git init
В директории foo, в поддиректории .gear создайте файл .gear/rules со следующим содержимым:
tar.gz: foo
Распакуйте архив с исходным кодом:
gear-update -c /path/to/foo-1.2.3.tar.gz foo
Напишите .spec-файл (спек). Спек можно составить по примерам.
Существующий пакет
Для изменения существующего пакета необходимо получить его исходный код. Исходный код находится в одном из двух мест:
- в gear-репозитории майнтайнера на git.alt, если майнтайнер пользуется gear
- в архиве репозиториев сизифа, если майнтайнер gear не пользуется.
Архив репозиториев сизифа
Если вы хотите собрать новую версию существующего пакета, то клонируйте 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-репозитории):
gear-update /path/to/kmymoney2-0.9.2.tar.bz2 kmymoney2
Обновите версию и changelog в .spec-файле (вручную, в разделе %changelog или с помощью утилиты add_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.