Альт линукс сборка пакетов

Краткое руководство по сборке пакета

Данное руководство поможет вам самостоятельно создать свой RPM-пакет в дистрибутивах ALT Linux. Больше информациx о тонкостях сборки пакетов и их сопровождению вы можете найти в разделах Руководства и Справочники.

Подготовка к сборке пакета

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

Исходный код

Исходный код для пакета вы можете скачать из Интернета. Предположим, вы скачали архив с исходным кодом foo-1.2.3.tar.gz

Доступ к репозиторию

Вам также потребуется доступ к репозиторию (для сборки необходимы зависимые пакеты). Идеальный вариант — копия Sisyphus или необходимого бранча. Однако можно использовать и удалённый репозиторий. Организация доступа к репозиторию будет рассмотрена ниже.

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

1. Установите программы для сборки пакетов:

apt-get install rpm-build gear

Возможно, понадобятся: hasher, rpm-build-licenses и rpm-utils

2. Подготовьте место на жёстком диске. Минимум 2 Гб. Крайне рекомендуется производить сборку на файловой системе tmpfs — скорость сборки может вырасти в несколько раз! Для использования этого варианта начинайте с size=2300m.

Создайте в домашнем каталоге файл .rpmmacros (обязательна точка в начале) примерно такого содержания:

%_packager Vassily Poupkine

В этом файле также можно указать ключи подписи пакетов (если вы собираетесь выкладывать пакеты в репозитории), макросы сборки и прочие полезные параметры.

Репозиторий Gear

Подготовьте репозиторий gear (являющийся частным случаем git-репозитория). Это необходимое условие для правки уже существующих пакетов и просто удобный инструмент для хранения ваших изменений:

Новый пакет

Если вы создаёте новый пакет «с нуля», выполните следующие команды для подготовки git-репозитория:

mkdir foo cd foo git init

В директории foo, в поддиректории .gear создайте файл .gear/rules со следующим содержимым:

Распакуйте архив с исходным кодом:

gear-update -c /path/to/foo-1.2.3.tar.gz foo

Напишите .spec-файл (спек). Спек-файл — текстовый файл с набором инструкций по сборке пакета RPM.

Документация по написанию спека

Существующий пакет

Для изменения существующего пакета необходимо получить его исходный код. Исходный код находится в одном из двух мест:

  • в gear-репозитории майнтайнера на git.alt, если майнтайнер пользуется gear
  • в архиве репозиториев сизифа, если майнтайнер gear не пользуется.

gear-репозиторий майнтайнера

Найдите на packages.altlinux.org интересующий вас пакет и посмотрите на репозитории на вкладке Gear. Их может быть больше одного, если над пакетом работает несколько человек. При отсутствии информации о том, кто сейчас ведёт разработку пакета, стоит взять репозиторий того, кто собирал его в последний раз. URL для клонирования репозитория указан в web-интерфейсе. К примеру, для keyjnote:

Читайте также:  Repo yandex browser linux

Архив репозиториев сизифа

Если gear-репозитория у майнтайнера нет, то придётся воспользоваться архивом Sisyphus. Для этого в браузере откройте http://git.altlinux.org/archive/ и найдите нужный вам пакет (к примеру, пакет kmymoney2 располагается в http://git.altlinux.org/archive/k/kmymoney2.git). URL для клонирования пакета указан в web-интерфейсе репозитория. Скажем, для kmymoney2:

Обновление исходного кода

Обновите исходный код из скачанного архива (команда выполняется в gear-репозитории):

gear-update /path/to/kmymoney2-0.9.2.tar.bz2 kmymoney2

Обновите версию и changelog в .spec-файле (вручную, в разделе %changelog или с помощью утилиты add_changelog).

Фиксирование изменений

Чтобы зафиксировать все ваши изменения, выполните:

Появится окно редактора (по умолчанию — vi, вызываемый редактор определяется переменной окружения EDITOR, многие начинающие предпочитают export EDITOR=mcedit) с версией и текстом последней записи changelog. Если нужно, поправьте текст, сохраните изменения и выйдите из редактора. Строки, начинающиеся с символа #, будут проигнорированы. Если выйти без сохранения, то изменения зафиксированы не будут.

Примечание: Changlelog вносится через редактор Vim. Чтобы в Vim сохранить изменения и выйти нужно ввести :wq и нажать Enter

Сборка

Среда сборки попытается собрать пакет в изолированной среде hasher. Если в процессе сборки возникнут ошибки — исправьте их и обязательно зафиксируйте изменения. В случае удачной сборки будут созданы пакеты:

  • в каталоге $TMP/repo/SRPMS.hasher/ — исходные пакеты .src.rpm
  • в каталоге $TMP/repo/i586/RPMS.hasher/ — собранные бинарные пакеты

Примечание: архитектура (i586) может отличаться названием в зависимости от настроек Hasher и сборочного компьютера.

Внимание! При перезагрузке tmpfs очищается, поэтому скопируйте пакеты в безопасное место.

Источник

Инструкция по сборке пакетов с помощью rpm

Внимание! Действия пунктов 1 и 4 настоящей инструкции выполняются с административными правами (root)!

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

# apt-get install rpm-build

2. Установка src.rpm пакета нужного ПО, которое требуется собрать

Находим и качаем src.rpm пакет нужного ПО, которое будем собирать, и устанавливаем его (от пользователя!):

$ rpm -i название_пакета_с_версией.src.rpm

При этом исходники (исходный код) пакета разместятся в ~/RPM/SOURCES , а спек — в ~/RPM/SPECS .
Наличие исходного кода программного обеспечения и спека, т.е. описания процесса сборки, является необходимым и достаточным условием для сборки rpm пакета (или пересборки, например, пакета из более нового бранча для более старого).

либо указание иного существующего и доступного по записи каталога как %_tmppath в ~/.rpmmacros

Приступаем к сборке, делается это командой:

$ rpm -ba —target (i586|x86_64) ~/RPM/SPECS/имя_спека_нужного_пакета_для_сборки.spec

При этом необходимо раскрыть скобки в зависимости от архитектуры, под которую происходит сборка пакета.

Собранные пакеты разместятся в ~/RPM/RPMS .

$ rpmbuild —rebuild —target (i586/x86_64) название_пакета_с_версией.src.rpm

При этом необходимо также раскрыть скобки в зависимости от архитектуры, под которую происходит сборка пакета.

Примечание: Что касается процессоров, не относящихся к семейству x86_64, то само по себе указание «—target i586» опционально (сборка отработает и без него, но при этом компилятор соберет пакет, точно заточенный под Ваш тип процессора и наименование пакета будет отличаться от наименования пакетов бранчей, к примеру, xxx.athlon.rpm или xxx.pentium4.rpm). Отсутствие параметра «—target i586» при сборке совершенно не гарантирует устанавливаемость собранного таким образом пакета на другом компьютере с другим процессором. Если же сборка совершается под 64-битную систему (на 64-битном процессоре с установленной 64-битной системой), то ключ «—target x86_64» теряет свой смысл и ставить его совершенно не обязательно.

Читайте также:  Linux user groups wheel

Примечание: Если rpm ругается на не найденные макросы примерно так: «ошибка: Macro %groupadd not found» или «ошибка: Macro %license not found», то помочь в дальнейшей сборке пакета должна установка в систему одного из пакетов rpm-build-* , который, фактически, является дополнительной зависимостью для сборки (пересборки) вашего пакета и отвечает за присвоение требуемых значений этим самым не найденным макросам.

4. Установка сборочных зависимостей

Если имеется srpm пакет, для сборки которого необходимо установить зависимости, то это можно сделать, выполнив следующую команду:

# apt-get build-dep название_пакета_с_версией.src.rpm

Если srpm пакета нет и имеется отдельно спек и исходный код, то почти 100% сборка сразу не пойдёт — в самом начале вывода в консоли будут показаны пакеты, которые должны быть установлены в систему, прежде чем сборка сможет пойти далее. Вы их (эти выведенные в консоль зависимости сборки) установите

# apt-get install пакет1 пакет2 пакет3 .

а после повторите сборку (возврат к шагу 3).

5. Автоматический поиск зависимостей для вновь собираемого пакета

Если вы собираете новый пакет, а не пересобираете уже существующий srpm, то хорошим подспорьем в рамках оформления (поиска и прописывания) нужных зависимостей в спек вам послужит утилита buildreq из пакета rpm-utils :

$ buildreq имя_спек_файла.spec

Источник

Краткое руководство по сборке пакета

Данное руководство поможет вам самостоятельно создать свой RPM-пакет в дистрибутивах ALT Linux. Больше информациx о тонкостях сборки пакетов и их сопровождению вы можете найти в разделах Руководства и Справочники.

Подготовка к сборке пакета

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

Исходный код

Исходный код для пакета вы можете скачать из Интернета. Предположим, вы скачали архив с исходным кодом foo-1.2.3.tar.gz

Доступ к репозиторию

Вам также потребуется доступ к репозиторию (для сборки необходимы зависимые пакеты). Идеальный вариант — копия Sisyphus или необходимого бранча. Однако можно использовать и удалённый репозиторий. Организация доступа к репозиторию будет рассмотрена ниже.

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

1. Установите программы для сборки пакетов:

apt-get install rpm-build gear

Возможно, понадобятся: hasher, rpm-build-licenses и rpm-utils

2. Подготовьте место на жёстком диске. Минимум 2 Гб. Крайне рекомендуется производить сборку на файловой системе tmpfs — скорость сборки может вырасти в несколько раз! Для использования этого варианта начинайте с size=2300m.

Создайте в домашнем каталоге файл .rpmmacros (обязательна точка в начале) примерно такого содержания:

%_packager Vassily Poupkine

Читайте также:  Install vmware tools linux debian

В этом файле также можно указать ключи подписи пакетов (если вы собираетесь выкладывать пакеты в репозитории), макросы сборки и прочие полезные параметры.

Репозиторий Gear

Подготовьте репозиторий gear (являющийся частным случаем git-репозитория). Это необходимое условие для правки уже существующих пакетов и просто удобный инструмент для хранения ваших изменений:

Новый пакет

Если вы создаёте новый пакет «с нуля», выполните следующие команды для подготовки git-репозитория:

mkdir foo cd foo git init

В директории foo, в поддиректории .gear создайте файл .gear/rules со следующим содержимым:

Распакуйте архив с исходным кодом:

gear-update -c /path/to/foo-1.2.3.tar.gz foo

Напишите .spec-файл (спек). Спек-файл — текстовый файл с набором инструкций по сборке пакета RPM.

Документация по написанию спека

Существующий пакет

Для изменения существующего пакета необходимо получить его исходный код. Исходный код находится в одном из двух мест:

  • в gear-репозитории майнтайнера на git.alt, если майнтайнер пользуется gear
  • в архиве репозиториев сизифа, если майнтайнер gear не пользуется.

gear-репозиторий майнтайнера

Найдите на packages.altlinux.org интересующий вас пакет и посмотрите на репозитории на вкладке Gear. Их может быть больше одного, если над пакетом работает несколько человек. При отсутствии информации о том, кто сейчас ведёт разработку пакета, стоит взять репозиторий того, кто собирал его в последний раз. URL для клонирования репозитория указан в web-интерфейсе. К примеру, для keyjnote:

Архив репозиториев сизифа

Если gear-репозитория у майнтайнера нет, то придётся воспользоваться архивом Sisyphus. Для этого в браузере откройте http://git.altlinux.org/archive/ и найдите нужный вам пакет (к примеру, пакет kmymoney2 располагается в http://git.altlinux.org/archive/k/kmymoney2.git). URL для клонирования пакета указан в web-интерфейсе репозитория. Скажем, для kmymoney2:

Обновление исходного кода

Обновите исходный код из скачанного архива (команда выполняется в gear-репозитории):

gear-update /path/to/kmymoney2-0.9.2.tar.bz2 kmymoney2

Обновите версию и changelog в .spec-файле (вручную, в разделе %changelog или с помощью утилиты add_changelog).

Фиксирование изменений

Чтобы зафиксировать все ваши изменения, выполните:

Появится окно редактора (по умолчанию — vi, вызываемый редактор определяется переменной окружения EDITOR, многие начинающие предпочитают export EDITOR=mcedit) с версией и текстом последней записи changelog. Если нужно, поправьте текст, сохраните изменения и выйдите из редактора. Строки, начинающиеся с символа #, будут проигнорированы. Если выйти без сохранения, то изменения зафиксированы не будут.

Примечание: Changlelog вносится через редактор Vim. Чтобы в Vim сохранить изменения и выйти нужно ввести :wq и нажать Enter

Сборка

Среда сборки попытается собрать пакет в изолированной среде hasher. Если в процессе сборки возникнут ошибки — исправьте их и обязательно зафиксируйте изменения. В случае удачной сборки будут созданы пакеты:

  • в каталоге $TMP/repo/SRPMS.hasher/ — исходные пакеты .src.rpm
  • в каталоге $TMP/repo/i586/RPMS.hasher/ — собранные бинарные пакеты

Примечание: архитектура (i586) может отличаться названием в зависимости от настроек Hasher и сборочного компьютера.

Внимание! При перезагрузке tmpfs очищается, поэтому скопируйте пакеты в безопасное место.

Источник

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