Alt linux сборка пакетов

Руководство по сборке RPM-пакетов для дистрибутивов Альт

Мы хотим обратить Ваше внимание на то, что для успешного прохождения руководства необходимо внимательно читать текст и уделять внимание деталям. Каждый раздел содержит информацию, которая поможет Вам понять процесс сборки пакетов и улучшить свои навыки в этой области.

В тексте документации присутствуют ссылки на дополнительную информацию. Мы настоятельно рекомендуем Вам переходить по этим ссылкам и ознакомляться с материалами более подробно. Это поможет Вам лучше понимать темы, раскрытые в руководстве, и получить полезную дополнительную информацию.

PDF Версия

Структура документации

Перед тем, как приступить к сборке, нужно создать структуру каталогов, необходимую RPM, находящуюся в Вашем «домашнем» каталоге:

$ tree ~/RPM/ /home/user/RPM/ |-- BUILD |-- BUILDROOT |-- RPMS | |-- i586 | |-- x86_64 | `-- noarch |-- SOURCES |-- SPECS `-- SRPMS
Name: bello Version: Release: alt1 Summary:
  • — команды без административных привилегий будут начинаться с символа “$”
  • — команды с административными привилегиями будут начинаться с символа “#”
# control sudowheel enabled

Вклад в руководство

Вы можете внести свой вклад в это руководство, отправив запрос на принятие изменений (Pull Request) в репозиторий.

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

Чтобы следовать данному руководству, Вам потребуется установить следующие пакеты:

# apt-get update Получено: 1 http://ftp.altlinux.org p10/branch/x86_64 release [4223B] Получено: 2 http://ftp.altlinux.org p10/branch/x86_64-i586 release [1665B] Получено: 3 http://ftp.altlinux.org p10/branch/noarch release [2844B] Получено 8732B за 0s (81,8kB/s). Найдено http://ftp.altlinux.org p10/branch/x86_64/classic pkglist Найдено http://ftp.altlinux.org p10/branch/x86_64/classic release Найдено http://ftp.altlinux.org p10/branch/x86_64/gostcrypto pkglist Найдено http://ftp.altlinux.org p10/branch/x86_64/gostcrypto release Найдено http://ftp.altlinux.org p10/branch/x86_64-i586/classic pkglist Найдено http://ftp.altlinux.org p10/branch/x86_64-i586/classic release Найдено http://ftp.altlinux.org p10/branch/noarch/classic pkglist Найдено http://ftp.altlinux.org p10/branch/noarch/classic release Чтение списков пакетов. Завершено Построение дерева зависимостей. Завершено # apt-get install gcc rpm-build rpmlint make python gear hasher patch rpmdevtools

Введение в пакетные менеджеры

RPM — это семейство пакетных менеджеров, применяемых в различных дистрибутивах GNU/Linux, в том числе и в проекте Сизиф и в дистрибутивах Альт. Практически каждый крупный проект, использующий RPM, имеет свою версию пакетного менеджера, отличающуюся от остальных.

  • наборе макросов, используемых в .spec-файлах,
  • различном поведении RPM при сборке «по умолчанию» — при отсутствии каких-либо указаний в .spec-файлах,
  • формате строк зависимостей,
  • мелких отличиях в семантике операций (например, в операциях сравнения версий пакетов),
  • мелких отличиях в формате файлов.
Читайте также:  Best linux server free

Для пользователя различия чаще всего заключаются в невозможности поставить «неродной» пакет из-за проблем с зависимостями или из-за формата пакета.

RPM в проекте Сизиф также не является исключением. Основные отличия RPM в Альт и Сизиф от RPM других крупных проектов заключаются в следующем:

  • обширный набор макросов для сборки различных типов пакетов,
  • отличающееся поведение «по умолчанию» для уменьшения количества шаблонного кода в .spec-файлах,
  • наличие механизмов для автоматического поиска межпакетных зависимостей,
  • наличие так называемых set-version зависимостей (начиная с 4.0.4-alt98.46 ), обеспечивающих дополнительный контроль за изменением ABI библиотек,
  • до p8 и выпусков 8.x включительно — очень древняя версия «базового» RPM (4.0.4), от которого началось развитие ветки RPM в Sisyphus (в Sisyphus и p9 осуществлён частичный переход на rpm 4.13 ).

Основные команды RPM

Для ознакомления с данным разделом потребуется пакет. В качестве примера мы будем использовать пакет Yodl-docs.

После скачивания пакета можно посмотреть данные о нём перед установкой. Для этого используется -qip, (Query|Install|Package)чтобы вывести информацию о пакете.

$ rpm -qip yodl-docs-4.03.00-alt2.noarch.rpm
Name : yodl-docs Epoch : 1 Version : 4.03.00 Release : alt2 DistTag : sisyphus+271589.100.1.2 Architecture: noarch Install Date: (not installed) Group : Documentation Size : 3701571 License : GPL Signature : DSA/SHA1, Чт 13 мая 2021 05:44:49, Key ID 95c584d5ae4ae412 Source RPM : yodl-4.03.00-alt2.src.rpm Build Date : Чт 13 мая 2021 05:44:44 Build Host : darktemplar-sisyphus.hasher.altlinux.org Relocations : (not relocatable) Packager : Aleksei Nikiforov Vendor : ALT Linux Team URL : https://gitlab.com/fbb-git/yodl Summary : Documentation for Yodl Description : Yodl is a package that implements a pre-document language and tools to process it. The idea of Yodl is that you write up a document in a pre-language, then use the tools (eg. yodl2html) to convert it to some final document language. Current converters are for HTML, ms, man, LaTeX SGML and texinfo, plus a poor-man's text converter. Main document types are "article", "report", "book" and "manpage". The Yodl document language is designed to be easy to use and extensible. This package contais documentation for Yodl.

Для установки используется параметр -ivh (Install|Verbose|Hash).

$ rpm -ivh yodl-docs-4.03.00-alt2.noarch.rpm

Источник

Сборка пакетов (etersoft-build-utils)

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

Читайте также:  Linux kernel smp preempt

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

С правами root

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

# epm install etersoft-build-utils

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

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

Настройки для подписи пакетов

Записываем данные о сборщике в файле ~/.rpmmacros по следующему образцу:

%_topdir %homedir/RPM %_tmppath %homedir/tmp %_gpg_path %homedir/.gnupg %_gpg_name Vitaly Lipatov %packager Vitaly Lipatov

Если вы являетесь мантейнером, то для того, чтобы подписывать пакеты и отправлять их для сборки в Сизиф, вы должны указать адреса, под которым вы зарегистрированы в 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 ""

Чтобы узнать свой user.signingkey, выполните команду

Искомое значение находится в секции 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-репозиторий по названию исходного пакета можно командой

Можно взять за основу пакет, собранный в стороннем репозитории. Поискать поможет

Создать git-репозиторий из пакета src.rpm:

Создание репозитория пакета с нуля

Сначала создаём каталог и инициализируем в нём git-репозиторий:

mkdir mypackage && cd mypackage && git init

Минимально в репозитории должен присутствовать файл .gear/rules с правилами упаковки тарбола. Обычно его минимальное содержимое таково:

и спек с названием mypackage.spec.

Имеются образцы спеков для разных типов пакетов.

На всё богатство уже существующих спеков можно любоваться здесь: https://github.com/altlinux/specs или на сайте https://packages.altlinux.org .

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

add_changelog название.spec

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

Читайте также:  Просмотреть атрибуты файлов linux

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

Для начала, нужно локализовать проблему — определить, является ли она проблемой конкретного дистрибутива/системы (например: отсутствие или неверная версия необходимых для сборки библиотек, специфика дистрибутива) или более глобальной (например: несобираемость определённой версией компилятора, ошибки в коде, несоответствие кода новым стандартам). В первом случае, поможет осуществить поиск по дистрибутиву/репозиторию, поискать решение проблемы в архивах почтовых рассылок или непосредственно попросить помощи в рассылке (sisyphus, devel, community).

Во втором случае, стоит начать с поиска готовых решений. В открытом сообществе, считается хорошим тоном публиковать решения найденных проблем. Зачастую, поисковики выдают море полезной информации по кратко описанной в трёх-пяти словах проблеме конкретного софта или тексту ошибки, полученной при сборке. Например, запроса вида «gcc4.1 mysoftware patch» может быть достаточно для поиска патча, решающего проблему сборки с новым gcc4.1).

Стоит также ознакомиться с другими репозиториями с пакетами открытой разработки. Зачастую там уже сталкивались с подобными проблемами, и у них есть готовое решение (патч).

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

Возможно при сборке вам придётся доустанавливать недостающие библиотеки. Имейте в виду, что в ALT принято называть пакеты для разработки так: libX-devel, где X — название библиотеки.

для поиска недостающего пакета или

для поиска по файлам, содержащимся в пакетах.

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

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

Под рутом

Перед использованием сборочной среды hasher нужно добавить специальных пользователей hasher:

Далее выйдите из системы (logout) и зайдите обратно (hasher-useradd изменяет список групп, в которых состоит пользователь).

Сборка

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

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

Обратите внимание, что сборка в hasher не учитывает незакоммиченные в репозиторий изменения. Возможны следующие варианты: rpmbsh -t (запустить сборку с учётом незакоммиченных изменений) или gamend (прилепить незакоммиченные изменения к последнему коммиту.

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

далее повторные сборки запускать с параметром -e:

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

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

Источник

Оцените статью
Adblock
detector