Сборка пакетов (etersoft-build-utils): различия между версиями
Строка 65: | Строка 65: | ||
== Сборка пакетов == | == Сборка пакетов == | ||
Образец того, как надо оформлять спек, вы можете посмотреть в пакете [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-репозиторий по названию исходного пакета можно командой | |||
Получить git-репозиторий по названию исходного пакета можно командой | |||
$ rpmgp -g название_пакета | |||
Можно взять за основу пакет, собранный в стороннем репозитории. Поискать поможет | |||
$ rpmgp -a название | |||
Загрузить: | |||
$ rpmgp -a -d <полная строка с названием пакета> | |||
Также доступны [[SampleSpecs|образцы спеков]] для разных типов пакетов. | Также доступны [[SampleSpecs|образцы спеков]] для разных типов пакетов. | ||
Версия от 16:38, 11 мая 2023
Краткая инструкция по сборке пакетов с помощью etersoft-build-utils
Здесь рассмотрена процедура сборки RPM-пакетов для ALT Linux. Это облегчённая инструкция для начинающих разработчиков, написанная с учётом использования пакета etersoft-build-utils.
Первоначальная настройка
С правами root
Устанавливаем пакеты, необходимые для сборки:
# epm install etersoft-build-utils
Данный пакет «вытянет» по зависимостям всё остальное, обычно необходимое при сборке.
Под пользователем
Настройки для подписи пакетов
Записываем данные о сборщике в файле ~/.rpmmacros по следующему образцу:
%_topdir %homedir/RPM %_tmppath %homedir/tmp %_gpg_path %homedir/.gnupg %_gpg_name Vitaly Lipatov <lav@altlinux.org> %packager Vitaly Lipatov <lav@altlinux.org>
Если вы являетесь мантейнером, то для того, чтобы подписывать пакеты и отправлять их для сборки в Сизиф, вы должны указать адреса, под которым вы зарегистрированы в ALT Linux Team.
Настройки для создания git-коммитов
Для того, чтобы у создаваемых вами git-коммитов был правильный пользователь (будет применяться также и для подписи тэгов сборки):
$ git config --global user.email dottedmag@altlinux.org $ git config --global user.name "Mikhail Gusarov"
Если у этого имени нет совпадения с gpg-ключом, можно задать его отдельно:
$ git config --global user.signingkey "<ID ключа GPG для подписи тэгов>"
Чтобы узнать свой user.signingkey, выполните команду
$ gpg --list-secret-keys
Искомое значение находится в секции sec. Его-то и следует прописать в переменную user.signingkey, предварительно снабдив символами 0x
В итоге должна получиться команда такого вида:
$ git config --global user.signingkey 0xA26F54C8
Внесённые данные хранятся в ~/.gitconfig и их всегда можно исправить.
Настройки для доступа к git-репозиторию и сборочнице
Доступ к gitery (git-сервер) и gyle (сборочный сервер) осуществляется через git. Вам нужно будет внести настройки в '~.ssh/config по образцу, заменив USERNAME на свой логин:
# Гитовница
Host gitery
HostName gitery.altlinux.org
User alt_USERNAME # а не просто USERNAME!
Port 222
# Сборочница
Host gyle
HostName gyle.altlinux.org
User alt_USERNAME # а не просто USERNAME!
Port 222
Сборка пакетов
Образец того, как надо оформлять спек, вы можете посмотреть в пакете wcalc или gnubiff. Настоятельно рекомендуется обратиться к документации, а также смотреть «как это сделано в другом пакете».
Получить git-репозиторий по названию исходного пакета можно командой
$ rpmgp -g название_пакета
Можно взять за основу пакет, собранный в стороннем репозитории. Поискать поможет
$ rpmgp -a название
Загрузить:
$ rpmgp -a -d <полная строка с названием пакета>
Также доступны образцы спеков для разных типов пакетов.
Сборка пакета «с нуля»
Вы должны разместить исходники пакета (архивы) в ~/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 в других системах.
При сборке пакетов сверяйтесь со следующей документацией: