Сборка пакетов (etersoft-build-utils): различия между версиями
м (→Дополнительная документация: 404) |
Нет описания правки |
||
Строка 3: | Строка 3: | ||
Здесь рассмотрена процедура сборки [http://ru.wikipedia.org/wiki/RPM RPM-пакетов] для [[Main Page|ALT Linux]]. | Здесь рассмотрена процедура сборки [http://ru.wikipedia.org/wiki/RPM RPM-пакетов] для [[Main Page|ALT Linux]]. | ||
Это облегчённая инструкция для начинающих разработчиков, написанная с учётом использования пакета [[etersoft-build-utils]]. | Это облегчённая инструкция для начинающих разработчиков, написанная с учётом использования пакета [[etersoft-build-utils]]. | ||
== Первоначальная настройка == | == Первоначальная настройка == | ||
Строка 9: | Строка 8: | ||
=== С правами root === | === С правами root === | ||
Устанавливаем пакеты, необходимые для сборки: | Устанавливаем пакеты, необходимые для сборки: | ||
<pre># | <pre># epm install etersoft-build-utils</pre> | ||
Данный пакет «вытянет» по зависимостям всё остальное, обычно необходимое при сборке. | Данный пакет «вытянет» по зависимостям всё остальное, обычно необходимое при сборке. | ||
Строка 22: | Строка 21: | ||
Если вы [[Процедура принятия в Team|являетесь мантейнером]], то для того, чтобы подписывать пакеты и отправлять их для сборки в Сизиф, вы должны указать адреса, под которым вы зарегистрированы в ALT Linux. | Если вы [[Процедура принятия в Team|являетесь мантейнером]], то для того, чтобы подписывать пакеты и отправлять их для сборки в Сизиф, вы должны указать адреса, под которым вы зарегистрированы в ALT Linux. | ||
<div style="display: inline; color: red;">ВНИМАНИЕ! Сборка принципиально невозможна под учётной записью root.</div> | <!--<div style="display: inline; color: red;">ВНИМАНИЕ! Сборка принципиально невозможна под учётной записью root.</div>--> | ||
== Сборка пакетов == | == Сборка пакетов == | ||
Образец того, как надо оформлять спек, вы можете посмотреть в пакете [http://packages.altlinux.org/ru/Sisyphus/srpms/wcalc wcalc] или [http://packages.altlinux.org/ru/Sisyphus/srpms/gnubiff gnubiff]. Настоятельно рекомендуется обратиться к [[Spectips|документации]], а также смотреть «как это сделано в другом пакете». | Образец того, как надо оформлять спек, вы можете посмотреть в пакете [http://packages.altlinux.org/ru/Sisyphus/srpms/wcalc wcalc] или [http://packages.altlinux.org/ru/Sisyphus/srpms/gnubiff gnubiff]. Настоятельно рекомендуется обратиться к [[Spectips|документации]], а также смотреть «как это сделано в другом пакете». | ||
Получить | Получить git-репозиторий по названию исходного пакета можно командой <tt>$ rpmgp -g название_пакета</tt> | ||
Также образцы спеков для разных типов пакетов | Также доступны [[SampleSpecs|образцы спеков]] для разных типов пакетов. | ||
<!-- | |||
=== [[ Gear + Hasher ]] === | === [[ Gear + Hasher ]] === | ||
=== Подготовка уже имеющегося src.rpm === | === Подготовка уже имеющегося src.rpm === | ||
Строка 42: | Строка 41: | ||
<pre>$ rpmcs название.spec</pre> | <pre>$ rpmcs название.spec</pre> | ||
чтобы привести спек в пригодный для использования вид. Далее его нужно поправить вручную, мысленно используя взятый из ALT Linux пример спека в качестве образца. | чтобы привести спек в пригодный для использования вид. Далее его нужно поправить вручную, мысленно используя взятый из ALT Linux пример спека в качестве образца. | ||
--> | |||
=== Сборка пакета «с нуля» === | === Сборка пакета «с нуля» === | ||
Строка 66: | Строка 66: | ||
Во втором случае, стоит начать с поиска готовых решений. В открытом сообществе, считается хорошим тоном публиковать решения найденных проблем. Зачастую, поисковики выдают море полезной информации по кратко описанной в трёх-пяти словах проблеме конкретного софта или тексту ошибки, полученной при сборке. Например, запроса вида «gcc4.1 mysoftware patch» может быть достаточно для поиска патча, решающего проблему сборки с новым gcc4.1). | Во втором случае, стоит начать с поиска готовых решений. В открытом сообществе, считается хорошим тоном публиковать решения найденных проблем. Зачастую, поисковики выдают море полезной информации по кратко описанной в трёх-пяти словах проблеме конкретного софта или тексту ошибки, полученной при сборке. Например, запроса вида «gcc4.1 mysoftware patch» может быть достаточно для поиска патча, решающего проблему сборки с новым gcc4.1). | ||
Стоит также | Стоит также ознакомиться с другими [[Repositories|репозиториями с пакетами открытой разработки]]. Зачастую там уже сталкивались с подобными проблемами, и у них есть готовое решение (патч). | ||
О том, как устранить отсутствие необходимых библиотек или заголовочных файлов, рассказано в следующем пункте. | <!--О том, как устранить отсутствие необходимых библиотек или заголовочных файлов, рассказано в следующем пункте.--> | ||
== Поиск пакетов == | == Поиск пакетов == | ||
Возможно при сборке вам придётся доустанавливать недостающие библиотеки. Имейте в виду, что в ALT принято называть пакеты для разработки так: libX-devel, где X — название библиотеки. Пользуйтесь <tt>apt-cache search название</tt> для поиска недостающего пакета. Если пакета нет в вашей системе, поищите его в [http://packages.altlinux.org/ru/Sisyphus/home Сизифе]. Если его нет и там, обратитесь к крупным собраниям информации о пакетах: | Возможно при сборке вам придётся доустанавливать недостающие библиотеки. Имейте в виду, что в ALT принято называть пакеты для разработки так: libX-devel, где X — название библиотеки. Пользуйтесь <tt>apt-cache search название</tt> для поиска недостающего пакета. Если пакета нет в вашей системе, поищите его в [http://packages.altlinux.org/ru/Sisyphus/home Сизифе]. <!--Если его нет и там, обратитесь к крупным собраниям информации о пакетах: | ||
* [http://citkit.ru http://citkit.ru] | * [http://citkit.ru http://citkit.ru] | ||
* [http://rpm.pbone.net http://rpm.pbone.net] | * [http://rpm.pbone.net http://rpm.pbone.net] | ||
а также в [[Repositories|репозиториях открытой разработки]]. | а также в [[Repositories|репозиториях открытой разработки]].--> | ||
В etersoft-build-utils есть команда <tt>rpmgp -a название</tt> для поиска пакета с указанным названием в других репозиториях. Далее с помощью этого же скрипта его можно скачать (параметр -d). Похожую функцию по поиску выполняет команда whohas из пакета whohas. | В etersoft-build-utils есть команда <tt>rpmgp -a название</tt> для поиска пакета с указанным названием в других репозиториях. Далее с помощью этого же скрипта его можно скачать (добавив ещё параметр -d). <!--Похожую функцию по поиску выполняет команда whohas из пакета whohas.--> | ||
== Сборочная среда Hasher == | == Сборочная среда Hasher == | ||
Строка 85: | Строка 85: | ||
# hasher-useradd имя_пользователя | # hasher-useradd имя_пользователя | ||
(после этого надо заново зайти в систему) | (после этого надо заново зайти в систему) | ||
<!-- См. README в /usr/share/doc/hasher-*/ --> | |||
Для сборки пакета в hasher запускаем | Для сборки пакета в hasher запускаем |
Версия от 00:02, 18 ноября 2020
Краткая инструкция по сборке пакетов с помощью etersoft-build-utils
Здесь рассмотрена процедура сборки RPM-пакетов для ALT Linux. Это облегчённая инструкция для начинающих разработчиков, написанная с учётом использования пакета etersoft-build-utils.
Первоначальная настройка
С правами root
Устанавливаем пакеты, необходимые для сборки:
# epm install etersoft-build-utils
Данный пакет «вытянет» по зависимостям всё остальное, обычно необходимое при сборке.
Под пользователем
Исправляем данные о сборщике в файле ~/.rpmmacros. Вот, например, содержимое моего файла ~/.rpmmacros:
%_topdir %homedir/RPM %_tmppath %homedir/tmp %_gpg_path %homedir/.gnupg %_gpg_name Vitaly Lipatov <lav@altlinux.ru> %packager Vitaly Lipatov <lav@altlinux.ru>
Если вы являетесь мантейнером, то для того, чтобы подписывать пакеты и отправлять их для сборки в Сизиф, вы должны указать адреса, под которым вы зарегистрированы в ALT Linux.
Сборка пакетов
Образец того, как надо оформлять спек, вы можете посмотреть в пакете wcalc или gnubiff. Настоятельно рекомендуется обратиться к документации, а также смотреть «как это сделано в другом пакете». Получить git-репозиторий по названию исходного пакета можно командой $ rpmgp -g название_пакета Также доступны образцы спеков для разных типов пакетов.
Сборка пакета «с нуля»
Вы должны разместить исходники пакета (архивы) в ~/RPM/SOURCES, а шаблон будущего спека (скопированный из образца) — в ~/RPM/SPEC.
Типовые действия
Находясь в каталоге RPM/SPECS:
$ rpmbb название.spec
- для сборки двоичного пакета (он будет записан в ~/RPM/RPMS)
$ rpmbb -r название.spec
- для того, чтобы в пакет автоматически прописались зависимости на пакеты, необходимые при сборке. Если пересобирается уже имеющийся пакет из Сизифа, то это обычно не нужно. (см. также Использование buildreq)
$ add_changelog название.spec
- для добавления строчки о данной сборке в секцию %changelog, в конце спека. После этого следует в спеке дописать комментарий, какие изменения были сделаны в данной сборке.
Сформированные зависимости (в строчке BuildRequires) желательно просмотреть, чтобы там не было откровенно ненужных пакетов.
Ошибки при сборке
Для начала, нужно локализовать проблему — определить, является ли она проблемой конкретного дистрибутива/системы (например: отсутствие или неверная версия необходимых для сборки библиотек, специфика дистрибутива) или более глобальной (например: несобираемость определённой версией компилятора, ошибки в коде, несоответствие кода новым стандартам). В первом случае, поможет осуществить поиск по дистрибутиву/репозиторию, поискать решение проблемы в архивах почтовых рассылок или непосредственно попросить помощи в рассылке (sisyphus, devel, community).
Во втором случае, стоит начать с поиска готовых решений. В открытом сообществе, считается хорошим тоном публиковать решения найденных проблем. Зачастую, поисковики выдают море полезной информации по кратко описанной в трёх-пяти словах проблеме конкретного софта или тексту ошибки, полученной при сборке. Например, запроса вида «gcc4.1 mysoftware patch» может быть достаточно для поиска патча, решающего проблему сборки с новым gcc4.1).
Стоит также ознакомиться с другими репозиториями с пакетами открытой разработки. Зачастую там уже сталкивались с подобными проблемами, и у них есть готовое решение (патч).
Поиск пакетов
Возможно при сборке вам придётся доустанавливать недостающие библиотеки. Имейте в виду, что в ALT принято называть пакеты для разработки так: libX-devel, где X — название библиотеки. Пользуйтесь apt-cache search название для поиска недостающего пакета. Если пакета нет в вашей системе, поищите его в Сизифе.
В etersoft-build-utils есть команда rpmgp -a название для поиска пакета с указанным названием в других репозиториях. Далее с помощью этого же скрипта его можно скачать (добавив ещё параметр -d).
Сборочная среда Hasher
Чтобы убедиться в том, что все зависимости правильны и сборка вашего пакета нормально пройдёт на сборочном сервере в ALT Linux, используется Hasher — среда, которая позволяет осуществить сборку пакета в «чистой» системе, куда установлены только пакеты, указанные в сборочных зависимостях.
# epm install hasher
Для настройки сборочной среды hasher нужно добавить пользователя:
- hasher-useradd имя_пользователя
(после этого надо заново зайти в систему)
Для сборки пакета в hasher запускаем
rpmbsh -i спек.spec
Эта команда соберёт пакет и установит его в тестовый hasher, где его можно будет проверить.
Дополнительная документация
- Etersoft-build-utils howto
- Sisyphus:/devel/RpmSetup
- Описание нюансов сборки RPM-пакетов в ALT Linux и не только
- Сборка пакетов RPM и DEB в других системах.
При сборке пакетов сверяйтесь со следующей документацией: