Сборка пакетов (etersoft-build-utils): различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Строка 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]].
Описана процедура сборки пакета устаревшим способом, с получением src.rpm, без использования [[Краткое руководство по сборке с gear|git/gear]].


== Первоначальная настройка ==
== Первоначальная настройка ==
Строка 9: Строка 8:
=== С правами root ===
=== С правами root ===
Устанавливаем пакеты, необходимые для сборки:
Устанавливаем пакеты, необходимые для сборки:
<pre># apt-get install etersoft-build-utils</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|документации]], а также смотреть «как это сделано в другом пакете».
Получить src.rpm для установленного в систему пакета можно командой <tt>$ rpmgp название_пакета</tt>
Получить git-репозиторий по названию исходного пакета можно командой <tt>$ rpmgp -g название_пакета</tt>
Также образцы спеков для разных типов пакетов доступны [http://wiki.sisyphus.ru/devel/SampleSpecs здесь].
Также доступны [[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|репозиториями с пакетами открытой разработки]]. Зачастую, мейнтейнеры этих репозиториев, уже сталкивались с такими же проблемами, и возможно у них есть решение (патч) для сложившейся ситуации.
Стоит также ознакомиться с другими [[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-*/
<!-- См. README в /usr/share/doc/hasher-*/ -->


Для сборки пакета в hasher запускаем
Для сборки пакета в hasher запускаем

Версия от 21:02, 17 ноября 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 нужно добавить пользователя:

  1. hasher-useradd имя_пользователя

(после этого надо заново зайти в систему)

Для сборки пакета в hasher запускаем

rpmbsh -i спек.spec

Эта команда соберёт пакет и установит его в тестовый hasher, где его можно будет проверить.


Дополнительная документация

При сборке пакетов сверяйтесь со следующей документацией: