Вход:  Пароль:  
FreeSource: AltLinux/Sisyphus/devel/СборкаПакетов ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Это старая версия AltLinux/Sisyphus/devel/СборкаПакетов за 2006-04-06 10:38:46..

Краткая инструкция по сборке пакетов в ALT Linux


Здесь рассмотрена процедура сборки пакетов для ALT Linux.
Это облегчённая инструкция для начинающих разработчиков, написанная с учётом использования пакета etersoft-build-utils.


Оглавление документа

Первоначальная настройка

С правами root


Устанавливаем пакеты, необходимые для сборки:

Данный пакет «вытянет» по зависимостям всё остальное, обычно необходимое при сборке.

Под пользователем

Исправляем данные о сборщике в файле ~/.rpmmacros.
Вот, например, содержимое моего файла ~/.rpmmacros:

Если вы являетесь мантейнером, то для того, чтобы подписывать пакеты и отправлять их для сборки в Сизиф, вы должны указать данные адреса, под которым вы зарегистрированы в ALT Linux.
ВНИМАНИЕ! Сборка принципиально невозможна штатно под учётной записью root.

Сборка пакетов


Образец того, как надо оформлять спек, вы можете посмотреть в пакете wcalc или GnomePPP. Настоятельно рекомендуется обратиться
к документации, а также смотреть «как это сделано в другом пакете».
Также образцы спеков для разных типов пакетов доступны здесь.

Подготовка уже имеющегося src.rpm


Устанавливаем файл *.src.rpm, который хотим собирать (под пользователем):


Исходники пакета при этом разместятся в ~/RPM/SOURCES, а спек – в ~/RPM/SPECS.


Заходим в каталог ~/RPM/SPECS, и видим там спек для собираемого пакета.
Если спек взят из другого дистрибутива, то сначала делаем

чтобы привести спек в пригодный для использования вид. Далее его нужно поправить вручную, используя взятый из ALT Linux пример спека в качестве образца.

Сборка пакета «с нуля»

Вы должны разместить исходники пакета (архивы) в ~/RPM/SOURCES, а шаблон будущего спека (скопированный из образца) – в ~/RPM/SPEC.

Типовые действия

Находясь в каталоге SPEC:


$ rpmbb название.spec

для сборки двоичного пакета (он будет создан в ~/RPM/RPMS)

$ rpmbb -r название.spec

для того, чтобы в пакет автоматически прописались зависимости на пакеты, необходимые при сборке. Если пересобирается уже имеющийся пакет из Сизифа, то это не обязательно. (см. также Использование buildreq)

$ add_changelog название.spec

для добавления строчки о данной сборке в секцию %changelog, в конце спека. После этого следует в спеке дописать комментарий, какие изменения были сделаны в данной сборке. Иногда также бывает удобно сразу указать список изменений:


$ add_changelog example.spec -e 'Initial build'


Более подробно об использовании этого скрипта вы можете узнать здесь: http://wiki.sisyphus.ru/devel/spectips/addchangelog

Сформированные зависимости (строчка BuildRequires) нужно просмотреть, чтобы там не было ненужных пакетов. Правильность сборки проверяется пересборкой готового пакета в hasher (см. ниже).

Ошибки при сборке

Одна из причин ошибок при сборке пакета является отсутствие необходимых библиотек или заголовочных файлов. См. следующий пункт.

Поиск пакетов

Возможно при сборке вам придётся доустанавливать недостающие библиотеки. Имейте в виду, что в ALT принято называть пакеты для разработки так: libX-devel, где X – название библиотеки. Пользуйтесь apt-cache search название для поиска недостающего пакета. Если пакета нет в вашей системе, поищите его в Сизифе. Если его нет и там, обратитесь к крупным собраниям информации о пакетах:

а также в репозитории открытой разработки.

Сборочная среда Hasher

Чтобы убедиться в том, что все зависимости правильны и сборка вашего пакета нормально пройдёт на сборочном сервере в ALT Linux, используется Hasher — среда, которая позволяет осуществить сборку пакета в «чистой» системе, куда установлены только пакеты, указанные в сборочных зависимостях.

Для настройки сборочной среды hasher нужно добавить пользователя:
# hasher-useradd имя_пользователя
(после этого надо заново зайти в систему)
См. README в /usr/share/doc/hasher-*/


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

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


Если вы производите сборку на удалённом сервере, то рекомендуется воспользоваться командой screen.
Запускаете: $screen
Далее, для отключения от сеанса: Ctrl-A, D
Для подключения обратно команду $screen -r

Лимиты на сборку у инкамингера


При сборке пакетов в сборочном окружении используются следующие лимиты:

ldv@ in devel

Вспомогательные скрипты для сборки


Существует набор скриптов, облегчающих процесс сборки, собранный в пакет etersoft-build-utils. В них для оптимизации сборки используется ccache. В параметрах скриптов обычно указываются названия спеков.


Вспомог. Обычная Где результат Комментарий
rpmbb -r buildreq Спек, строка BuildRequires: вычисление необходимых зависимостей сборки с занесением в спек
rpmbb rpm -bb ~/RPM/RPMS полная сборка пакета
rpmbs rpm -bs ~/RPM/SRPMS собрать src.rpm
rpmbs -u ~/RPM/remote/upload собрать src.rpm, подписать его и выложить в Incoming; удалить buildroot
rpmbsh [ -r ] [-m] ~/hasher/repo/i586/RPMS.hasher собрать из спека src.rpm и отправить его на сборку в hasher
myhsh [-m] ~/hasher/repo/i586/RPMS.hasher пересобрать указанный .src.rpm в hasher
rpmbb -c rpm -bc --short-circuit ~/RPM/BUILD компиляция без установки
rpmbb -i ~/RPM/RPMS выполнить установку и упаковку пакета, пропустив компиляцию
rpmgs спек для указанного спека скачивает архив с исходниками
rpmgp пакет для указанного пакета скачивает src.rpm
rpmbph [-M30] спек выполняет бэкпорт указанного спека в указанный дистрибутив

Ключ -m указывает произвести сборку в фоновом режиме и прислать лог по почте (не работает)
Ключ -r указывает произвести сборку на удалённом сервере
Ключ -u указывает отправить в инкоминг после сборки

Стандартная процедура


Если вы не хотите использовать etersoft-build-utils, вот описание использования стандартных команд:


Устанавливаем необходимые для сборки пакеты

Приводим спек по возможности в пригодный для использования вид:


Собираем пакет командой rpm -bb.

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



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


Краткие справочники команд RPM и APT – на странице http://www.linux-os.ru/articles (спасти, поскольку сервер не работает)


Vitaly Lipatov <lav@etersoft.ru>, 11.01.04, 08.03.04, 28.10.04, 28.02.2005, 04.09.2005, 21.02.2006


Ссылок на эту страницу нет


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]