Краткое руководство по сборке пакета: различия между версиями
(→Архив репозиториев сизифа: гуй к архиву сменён) |
Мария (обсуждение | вклад) м (→gear-репозиторий майнтайнера: добавлена ссылка на страницу "Сборка_пакета_с_РЕАЛЬНОГО_НУЛЯ" (в соответствии с ответом в рассылке devel-newbies 20.11.2021)) |
||
(не показано 17 промежуточных версий 7 участников) | |||
Строка 1: | Строка 1: | ||
[[ | [[category:devel]] | ||
{{Stub}} | |||
Данное руководство поможет вам самостоятельно создать свой RPM-пакет в дистрибутивах ALT Linux. | Данное руководство поможет вам самостоятельно создать свой RPM-пакет в дистрибутивах ALT Linux. | ||
Строка 17: | Строка 18: | ||
=== Доступ к репозиторию === | === Доступ к репозиторию === | ||
Вам также потребуется доступ к репозиторию (для сборки необходимы зависимые пакеты). Идеальный | Вам также потребуется доступ к репозиторию (для сборки необходимы зависимые пакеты). Идеальный вариант — [[Mirror|копия Sisyphus]] или необходимого [[Branches|бранча]]. Однако можно использовать и удалённый репозиторий. Организация доступа к репозиторию будет рассмотрена ниже. | ||
=== Сборочная среда === | === Сборочная среда === | ||
: Подробнее: [[Join/Environment]] | |||
1. Установите программы для сборки пакетов: | 1. Установите программы для сборки пакетов: | ||
apt-get install rpm-build gear | apt-get install rpm-build gear | ||
Возможно, понадобятся: hasher, rpm-build-licenses и rpm-utils | |||
2. Подготовьте место на жёстком диске. Минимум 2 Гб. Крайне рекомендуется производить сборку на файловой системе | 2. Подготовьте место на жёстком диске. Минимум 2 Гб. Крайне рекомендуется производить сборку на файловой системе [[tmpfs]] — скорость сборки может вырасти в несколько раз! Для использования этого варианта начинайте с <tt>size=2300m</tt>. | ||
3. Настройте rpm: | 3. Настройте rpm: | ||
Строка 43: | Строка 41: | ||
== Репозиторий Gear == | == Репозиторий Gear == | ||
Подготовьте репозиторий [[gear]] (являющийся частным случаем [[git]]-репозитория | Подготовьте репозиторий [[gear]] (являющийся частным случаем [[git]]-репозитория). Это необходимое условие для правки уже существующих пакетов и просто удобный инструмент для хранения ваших изменений: | ||
=== Новый пакет === | === Новый пакет === | ||
Строка 61: | Строка 59: | ||
gear-update -c /path/to/foo-1.2.3.tar.gz foo | gear-update -c /path/to/foo-1.2.3.tar.gz foo | ||
Напишите .spec-файл (''спек''). Спек | Напишите .spec-файл (''спек''). Спек-файл — текстовый файл с набором инструкций по сборке пакета RPM. | ||
==== [[SpecTips|Документация по написанию спека]] ==== | |||
* [[Spec|Краткое руководство по написанию спека]] | |||
* [[SampleSpecs|Примеры спеков]]. | |||
=== Существующий пакет === | === Существующий пакет === | ||
Строка 69: | Строка 72: | ||
* в gear-репозитории майнтайнера на [[git.alt]], если майнтайнер пользуется gear | * в gear-репозитории майнтайнера на [[git.alt]], если майнтайнер пользуется gear | ||
* в архиве репозиториев сизифа, если майнтайнер gear не пользуется. | * в архиве репозиториев сизифа, если майнтайнер gear не пользуется. | ||
==== gear-репозиторий майнтайнера ==== | |||
Найдите на [http://packages.altlinux.org/ru packages.altlinux.org] интересующий вас пакет и посмотрите на репозитории на вкладке Gear. Их может быть больше одного, если над пакетом работает несколько человек. При отсутствии информации о том, кто сейчас ведёт разработку пакета, стоит взять репозиторий того, кто собирал его в последний раз. URL для клонирования репозитория указан в web-интерфейсе. К примеру, для keyjnote: | |||
git clone git://git.altlinux.org/people/dottedmag/packages/keyjnote.git | |||
[https://www.altlinux.org/Сборка_пакета_с_РЕАЛЬНОГО_НУЛЯ Как правильно собирать пакет, исходники которого лежат во внешнем git] | |||
==== Архив репозиториев сизифа ==== | ==== Архив репозиториев сизифа ==== | ||
Если gear-репозитория у майнтайнера нет, то придётся воспользоваться архивом Sisyphus. Для этого в браузере откройте <tt>http://git.altlinux.org/archive/<tt> и найдите нужный вам пакет (к примеру, пакет kmymoney2 располагается в http://git.altlinux.org/archive/k/kmymoney2.git). URL для клонирования пакета указан в web-интерфейсе репозитория. Скажем, для kmymoney2: | Если gear-репозитория у майнтайнера нет, то придётся воспользоваться архивом Sisyphus. Для этого в браузере откройте <tt>http://git.altlinux.org/archive/</tt> и найдите нужный вам пакет (к примеру, пакет kmymoney2 располагается в http://git.altlinux.org/archive/k/kmymoney2.git). URL для клонирования пакета указан в web-интерфейсе репозитория. Скажем, для kmymoney2: | ||
git clone git://git.altlinux.org/archive/k/kmymoney2.git | git clone git://git.altlinux.org/archive/k/kmymoney2.git | ||
Строка 90: | Строка 101: | ||
gear-commit -a | gear-commit -a | ||
Появится окно редактора (по | Появится окно редактора (по умолчанию — vi, вызываемый редактор определяется переменной окружения EDITOR, многие начинающие предпочитают export EDITOR=mcedit) с версией и текстом последней записи changelog. Если нужно, поправьте текст, сохраните изменения и выйдите из редактора. Строки, начинающиеся с символа <tt>#</tt>, будут проигнорированы. Если выйти без сохранения, то изменения зафиксированы не будут. | ||
{{Note|Changlelog вносится через редактор Vim. Чтобы в Vim сохранить изменения и выйти нужно ввести ''':wq''' и нажать Enter}} | |||
== Сборка == | == Сборка == | ||
Строка 98: | Строка 111: | ||
gear-hsh $TMP/ | gear-hsh $TMP/ | ||
Среда сборки попытается собрать пакет в изолированной среде [[ | Среда сборки попытается собрать пакет в изолированной среде [[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 и сборочного компьютера. | ||
Внимание! При перезагрузке tmpfs очищается, поэтому скопируйте пакеты в безопасное место. | '''Внимание!''' При перезагрузке tmpfs очищается, поэтому скопируйте пакеты в безопасное место. | ||
{{Category navigation|title=Сборка пакетов|category=Сборка пакетов|sortkey={{SUBPAGENAME}}}} | |||
Текущая версия от 15:24, 19 января 2022
Данное руководство поможет вам самостоятельно создать свой RPM-пакет в дистрибутивах ALT Linux.
Больше информациx о тонкостях сборки пакетов и их сопровождению вы можете найти в разделах Руководства и Справочники.
Подготовка к сборке пакета
Помимо желания собрать пакет вам необходимы:
- Исходный код программы или библиотеки
- Доступ к репозиторию
- Сборочная среда
Исходный код
Исходный код для пакета вы можете скачать из Интернета. Предположим, вы скачали архив с исходным кодом foo-1.2.3.tar.gz
Доступ к репозиторию
Вам также потребуется доступ к репозиторию (для сборки необходимы зависимые пакеты). Идеальный вариант — копия Sisyphus или необходимого бранча. Однако можно использовать и удалённый репозиторий. Организация доступа к репозиторию будет рассмотрена ниже.
Сборочная среда
- Подробнее: Join/Environment
1. Установите программы для сборки пакетов:
apt-get install rpm-build gear
Возможно, понадобятся: hasher, rpm-build-licenses и rpm-utils
2. Подготовьте место на жёстком диске. Минимум 2 Гб. Крайне рекомендуется производить сборку на файловой системе tmpfs — скорость сборки может вырасти в несколько раз! Для использования этого варианта начинайте с size=2300m.
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-файл (спек). Спек-файл — текстовый файл с набором инструкций по сборке пакета RPM.
Документация по написанию спека
Существующий пакет
Для изменения существующего пакета необходимо получить его исходный код. Исходный код находится в одном из двух мест:
- в gear-репозитории майнтайнера на git.alt, если майнтайнер пользуется gear
- в архиве репозиториев сизифа, если майнтайнер gear не пользуется.
gear-репозиторий майнтайнера
Найдите на packages.altlinux.org интересующий вас пакет и посмотрите на репозитории на вкладке Gear. Их может быть больше одного, если над пакетом работает несколько человек. При отсутствии информации о том, кто сейчас ведёт разработку пакета, стоит взять репозиторий того, кто собирал его в последний раз. URL для клонирования репозитория указан в web-интерфейсе. К примеру, для keyjnote:
git clone git://git.altlinux.org/people/dottedmag/packages/keyjnote.git
Как правильно собирать пакет, исходники которого лежат во внешнем git
Архив репозиториев сизифа
Если gear-репозитория у майнтайнера нет, то придётся воспользоваться архивом Sisyphus. Для этого в браузере откройте http://git.altlinux.org/archive/ и найдите нужный вам пакет (к примеру, пакет kmymoney2 располагается в http://git.altlinux.org/archive/k/kmymoney2.git). URL для клонирования пакета указан в web-интерфейсе репозитория. Скажем, для kmymoney2:
git clone git://git.altlinux.org/archive/k/kmymoney2.git
Обновление исходного кода
Обновите исходный код из скачанного архива (команда выполняется в 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 очищается, поэтому скопируйте пакеты в безопасное место.