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

Материал из ALT Linux Wiki

(Различия между версиями)
Перейти к: навигация, поиск
(Сборочная среда)
 
(29 промежуточных версий не показаны.)
Строка 1: Строка 1:
-
[[Категория:HOWTO]]
+
[[category:devel]]
 +
{{Stub}}
-
Данное HOWTO поможет вам самостоятельно создать свой пакет в дистрибутивах ALT Linux.  
+
Данное руководство поможет вам самостоятельно создать свой RPM-пакет в дистрибутивах ALT Linux.
-
Расширенную информацию о тонкостях сборки пакетов и их сопровождению вы можете найти в разделах [[Категория:Руководства|Руководства]] и [[Категория:Справочники|Справочники]].
+
Больше информациx о тонкостях сборки пакетов и их сопровождению вы можете найти в разделах [[:Категория:Руководства|Руководства]] и [[:Категория:Справочники|Справочники]].
== Подготовка к сборке пакета ==
== Подготовка к сборке пакета ==
-
Помимо желания собрать пакет вам необходимо:
+
Помимо желания собрать пакет вам необходимы:
* Исходный код программы или библиотеки
* Исходный код программы или библиотеки
* Доступ к репозиторию
* Доступ к репозиторию
Строка 13: Строка 14:
=== Исходный код ===
=== Исходный код ===
-
Исходный код для пакета вы можете скачать из Интернета. Положим, вы скачали архив с исходным кодом '''foo-1.2.3.tar.gz'''
+
Исходный код для пакета вы можете скачать из Интернета. Предположим, вы скачали архив с исходным кодом '''foo-1.2.3.tar.gz'''
=== Доступ к репозиторию ===
=== Доступ к репозиторию ===
-
Для того, чтобы собрать пакет, потребуется доступ к репозиторию (будут нужны зависимые пакеты). Идеальный вариант — [[Mirror|копия Sisyphus]] или необходимого [[Branches|бранча]]. Однако можно использовать и удалённый репозиторий. Организация доступа к репозиторию будет рассмотрена ниже.
+
Вам также потребуется доступ к репозиторию (для сборки необходимы зависимые пакеты). Идеальный вариант — [[Mirror|копия Sisyphus]] или необходимого [[Branches|бранча]]. Однако можно использовать и удалённый репозиторий. Организация доступа к репозиторию будет рассмотрена ниже.
=== Сборочная среда ===
=== Сборочная среда ===
Строка 23: Строка 24:
1. Установите программы для сборки пакетов:
1. Установите программы для сборки пакетов:
-
<pre>apt-get install rpm-build gear</pre>
+
apt-get install rpm-build gear
-
2. Подготовьте место на жёстком диске. Минимум 2 Гб. Крайне рекомендуется производить сборку на файловой системе ''tmpfs'' — скорость сборки может вырасти в 3 раза! tmpfs использует память и файл подкачки, поэтому заранее подготовьте большой раздел (или, что хуже, файл) подкачки. Проверьте размер tmpfs в файле /etc/fstab:
+
2. Подготовьте место на жёстком диске. Минимум 2 Гб. Крайне рекомендуется производить сборку на файловой системе [[tmpfs]] — скорость сборки может вырасти в несколько раз! Для использования этого варианта начинайте с <tt>size=2300m</tt>.
-
<pre>tmpfs          /tmp                    tmpfs  nosuid,size=2300m              0 0</pre>
+
3. Настройте rpm:
-
 
+
-
В данном случае параметр '''size=2300m''' устанавливает размер файловой системы в 2300 Мб (2,3 Гб). Если вы вносили изменения, то запустите
+
-
 
+
-
<pre>mount /tmp -o remount</pre>
+
-
 
+
-
3. Настройте .rpmmacros:
+
Создайте в домашнем каталоге файл '''.rpmmacros''' (обязательна точка в начале) примерно такого содержания:
Создайте в домашнем каталоге файл '''.rpmmacros''' (обязательна точка в начале) примерно такого содержания:
-
<pre>%_packager Vasya Pipkin <pupkin@altlinux.org></pre>
+
%_packager Vassily Poupkine <pupkin@altlinux.org>
В этом файле также можно указать ключи подписи пакетов (если вы собираетесь выкладывать пакеты в репозитории), макросы сборки и прочие полезные параметры.
В этом файле также можно указать ключи подписи пакетов (если вы собираетесь выкладывать пакеты в репозитории), макросы сборки и прочие полезные параметры.
Строка 43: Строка 38:
== Репозиторий Gear ==
== Репозиторий Gear ==
-
Подготовьте репозиторий Gear/Git. Это необходимое условие для правки уже существующих пакетов и просто удобно чтобы хранить ваши изменения. Рекомендуется создать отдельный каталог для всех репозиториев Gear.
+
Подготовьте репозиторий [[gear]] (являющийся частным случаем [[git]]-репозитория). Это необходимое условие для правки уже существующих пакетов и просто удобный инструмент для хранения ваших изменений:
-
1. Если вы создаёте новый пакет «с нуля», для нашего пакета выполните в этом общем каталоге для сборки:
+
=== Новый пакет ===
-
<pre>mkdir foo
+
Если вы создаёте новый пакет «с нуля», выполните следующие команды для подготовки git-репозитория:
-
cd foo
+
-
git-init</pre>
+
-
В каталоге foo создайте файл '''.gear-rules''' следующего содержимого:
+
mkdir foo
 +
cd foo
 +
git init
-
<pre>tar.gz: foo</pre>
+
В директории foo, в поддиректории <tt>.gear</tt> создайте файл <tt>.gear/rules</tt> со следующим содержимым:
 +
 
 +
tar.gz: foo
Распакуйте архив с исходным кодом:
Распакуйте архив с исходным кодом:
-
<pre>gear-update -c /path/to/foo-1.2.3.tar.gz foo</pre>
+
gear-update -c /path/to/foo-1.2.3.tar.gz foo
 +
 
 +
Напишите .spec-файл (''спек''). Спек-файл — текстовый файл с набором инструкций по сборке пакета RPM.
 +
 
 +
==== Документация по написанию спека ====
 +
 
 +
* [[Spec|Краткое руководство по написанию спека]]
 +
* [[SampleSpecs|Примеры спеков]].
 +
 
 +
=== Существующий пакет ===
 +
 
 +
Для изменения существующего пакета необходимо получить его исходный код. Исходный код находится в одном из двух мест:
 +
 
 +
* в gear-репозитории майнтайнера на [[git.alt]], если майнтайнер пользуется gear
 +
* в архиве репозиториев сизифа, если майнтайнер gear не пользуется.
 +
 
 +
==== gear-репозиторий майнтайнера ====
 +
 
 +
Найдите на [http://packages.altlinux.org/ru packages.altlinux.org] интересующий вас пакет и посмотрите на репозитории на вкладке Gear. Их может быть больше одного, если над пакетом работает несколько человек. При отсутствии информации о том, кто сейчас ведёт разработку пакета, стоит взять репозиторий того, кто собирал его в последний раз. URL для клонирования репозитория указан в web-интерфейсе. К примеру, для keyjnote:
 +
 
 +
git clone git://git.altlinux.org/people/dottedmag/packages/keyjnote.git
 +
 
 +
==== Архив репозиториев сизифа ====
-
Напишите .spec-файл (''спек''). Спек можно составить по [[SampleSpecs|примерам]].
+
Если gear-репозитория у майнтайнера нет, то придётся воспользоваться архивом Sisyphus. Для этого в браузере откройте <tt>http://git.altlinux.org/archive/</tt> и найдите нужный вам пакет (к примеру, пакет kmymoney2 располагается в http://git.altlinux.org/archive/k/kmymoney2.git). URL для клонирования пакета указан в web-интерфейсе репозитория. Скажем, для kmymoney2:
-
2. Если вы хотите собрать новую версию пакета существующего пакета, то клонируйте репозиторий Gear пакета из Sisyphus. Для этого в браузере откройте '''http://git.altlinux.org/archive/''' для адреса Git (в подкаталоге по первому символу имени). Например, пакет kmymoney2 располагается в http://git.altlinux.org/archive/k/kmymoney2.git/. Получить последнюю версию можно командой (вместо http:// пишите git://, а расширение .git можно опустить):
+
git clone git://git.altlinux.org/archive/k/kmymoney2.git
-
<pre>git-clone git://git.altlinux.org/archive/k/kmymoney2/</pre>
+
== Обновление исходного кода ==
-
Обновите исходный код из скаченного архива (из созданного каталога):
+
Обновите исходный код из скачанного архива (команда выполняется в gear-репозитории):
-
<pre>gear-update /path/to/kmymoney2-0.9.2.tar.bz2 kmymoney2</pre>
+
gear-update /path/to/kmymoney2-0.9.2.tar.bz2 kmymoney2
-
Обновите версию и changelog в файле .spec. Для автоматического добавления даты в changelog можно запустить команду '''add_changelog''' и изменить подпись под созданной строкой в разделе %changelog спека.
+
Обновите версию и changelog в .spec-файле (вручную, в разделе <tt>%changelog</tt> или с помощью утилиты <tt>add_changelog</tt>).
== Фиксирование изменений ==
== Фиксирование изменений ==
Строка 75: Строка 94:
Чтобы зафиксировать все ваши изменения, выполните:
Чтобы зафиксировать все ваши изменения, выполните:
-
<pre>gear-commit -a</pre>
+
gear-commit -a
-
Появится окно редактора (по умолчанию — vi, переопределить его можно в переменной среды окружения EDITOR: export EDITOR=mcedit) с версией и текстом последней записи changelog. Если нужно, поправьте текст, сохраните изменения и выйдите из редактора. Строки, начинающиеся с символа # будут проигнорированы. Если выйти без сохранения, то изменения зафиксированы не будут.
+
Появится окно редактора (по умолчанию — vi, вызываемый редактор определяется переменной окружения EDITOR, многие начинающие предпочитают export EDITOR=mcedit) с версией и текстом последней записи changelog. Если нужно, поправьте текст, сохраните изменения и выйдите из редактора. Строки, начинающиеся с символа <tt>#</tt>, будут проигнорированы. Если выйти без сохранения, то изменения зафиксированы не будут.
== Сборка ==
== Сборка ==
Строка 83: Строка 102:
И, наконец, сборка!
И, наконец, сборка!
-
<pre>gear-hsh /tmp/</pre>
+
gear-hsh $TMP/
-
Среда сборки попытается собрать пакет в изолированной среде [[Hasher]]. Если есть ошибки, то исправьте их и обязательно зафиксируйте изменения. В случае удачной сборки будут созданы пакеты:
+
Среда сборки попытается собрать пакет в изолированной среде [[hasher]]. Если в процессе сборки возникнут ошибки исправьте их и обязательно зафиксируйте изменения. В случае удачной сборки будут созданы пакеты:
-
* в каталоге /tmp/repo/SRPMS.hasher — исходные пакеты .src.rpm
+
* в каталоге <tt>$TMP/repo/SRPMS.hasher/</tt> — исходные пакеты .src.rpm
-
* в каталоге /tmp/repo/i586/RPMS.hasher/ — собранные бинарные пакеты
+
* в каталоге <tt>$TMP/repo/i586/RPMS.hasher/</tt> — собранные бинарные пакеты
Примечание: архитектура (i586) может отличаться названием в зависимости от настроек Hasher и сборочного компьютера.
Примечание: архитектура (i586) может отличаться названием в зависимости от настроек Hasher и сборочного компьютера.
-
Внимание! При перезагрузке tmpfs очищается, поэтому скопируйте пакеты в безопасное место.
+
'''Внимание!''' При перезагрузке tmpfs очищается, поэтому скопируйте пакеты в безопасное место.
 +
{{Category navigation|title=Сборка пакетов|category=Сборка пакетов|sortkey={{SUBPAGENAME}}}}

Текущая версия на 17:47, 2 июля 2015

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


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

Содержание

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

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

  • Исходный код программы или библиотеки
  • Доступ к репозиторию
  • Сборочная среда

Исходный код

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

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

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

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

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

apt-get install rpm-build gear

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

3. Настройте rpm:

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

%_packager Vassily Poupkine <pupkin@altlinux.org>

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

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

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

Новый пакет

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

mkdir foo
cd foo
git init

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

tar.gz: foo

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

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:

git clone git://git.altlinux.org/people/dottedmag/packages/keyjnote.git

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

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

git clone git://git.altlinux.org/archive/k/kmymoney2.git

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

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

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

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

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

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

gear-commit -a

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

Сборка

И, наконец, сборка!

gear-hsh $TMP/

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

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

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

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

 
Личные инструменты