From Fedora Project Wiki

Line 103: Line 103:


где %{X} это release number (увеличивается на 1), %{alphatag} начинается в формате YYYYMMDD и далее, например, хэш Git.
где %{X} это release number (увеличивается на 1), %{alphatag} начинается в формате YYYYMMDD и далее, например, хэш Git.
== Создание SPEC ==
См. также :
# [http://docs.fedoraproject.org/drafts/rpm-guide-en/index.html RPM Guide (by Eric Foster-Johnson)]
# [http://www.lexpr.ru/node/11 Red Hat RPM Guide - русский перевод (Влад Горелецкий)]
# [http://tigro.info/blog/index.php?id=287 Сборка пакетов. Глава 1. RPM. Часть 2. Подготовка к сборке и обзор spec-файла]
Создаем заготовку
<pre>
$ cd ~/rpmbuild/SPECS
$ rpmdev-newspec  program
$ vi program.spec
</pre>
Далее см. [[PackageMaintainers/CreatingPackageHowTo#Spec_file_pieces_explained|Spec file pieces explained]]
Вывести список наименований групп софта (поле '''Group''' спека)
<pre>
less /usr/share/doc/rpm-4.6.1/GROUPS
</pre>
или
<pre>
LANG=C; yum grouplist
</pre>
Смотреть какие пакеты входят в группу,  например "System Tools" :
<pre>
yum groupinfo "System Tools"
</pre>
Чтобы посмотреть, как разворачивается макрос %makeinstall
<pre>
rpm --eval '%makeinstall'
</pre>
Или любой другой макрос для определенного спека, например
<pre>
rpmbuild -E '%{_bindir}' myfile.spec
</pre>

Revision as of 13:03, 6 November 2009

Предисловие

Этот конспект я вел исключительно для собственных нужд. Поэтому этот текст не является руководством, это необходимо понять прежде всего - это краткий конспект. Вместо любых разъяснений даны ссылки на исчерпывающие материалы по теме, которые обновляются, как и принято в комьюнити, более сведущими специалистами. В этом тескте также нет правильных переводов терминов.

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

Автор выражает надежду, что изложенная информация будет полезна для успешного старта.


Начало

Источники:

  1. Join the package collection maintainers
  2. How to create an RPM package
  3. Building Packages Guide
  4. Packaging:Guidelines
  5. Packaging:NamingGuidelines
  6. New package process for existing contributors

Дополнительно

Перво-наперво посмотреть нет ли уже такого пакета в :

Можно взять спек от похожей проги (а лучше несколько)

$ yumdownloader --source sourcepackage-name


Настройка системы

How to create an RPM package

# yum groupinstall "Development Tools"
# yum install rpmdevtools

Создать отдельного юзера под которым будут собираться пакеты:

# /usr/sbin/useradd makerpm

Создать дерево каталогов, необходимое для сборки

$ rpmdev-setuptree

Имена

Packaging:NamingGuidelines

Допустимые символы для именования пакета

  a--z  A--Z 0--9
  -._+

При присвоении имен пакетов для Fedora, мантайнеру необходимо использовать - в качестве разделителя для названия частей. Мантайнер **НЕ** должен юзать _ + . в качестве разделителя.


Имя spec файла по схеме : %{имя пакета}.spec. Если имя пакета foo-1.0.0-1.src.rpm, то имя spec файла д.б. foo.spec

%{номер версии} не нужно писать в имени spec файла.

Поле Version в спеке должно быть.

release number (или в старых доках vepoch) начинается с 1. При незначительных изменениях он увеличивается на 1. При значительных изменениях увеличивается version number и release number опять начинается с 1.

См. также Packaging:DistTag.

Pre-Release

Release Tag для Pre-Release Packages:

0.%{X}.%{alphatag}

где %{X} - release number (увеличивается на 1), %{alphatag} строка из версии.

Пример для release candidate 1

#define alphatag rc1

См. также Software release life cycle для общего развития.


Snapshot packages

Нумеруются как Pre-Release packages

0.%{X}.%{alphatag}

где %{X} это release number (увеличивается на 1), %{alphatag} начинается в формате YYYYMMDD и далее, например, хэш Git.


Создание SPEC

См. также :

  1. RPM Guide (by Eric Foster-Johnson)
  2. Red Hat RPM Guide - русский перевод (Влад Горелецкий)
  3. Сборка пакетов. Глава 1. RPM. Часть 2. Подготовка к сборке и обзор spec-файла

Создаем заготовку

$ cd ~/rpmbuild/SPECS
$ rpmdev-newspec  program
$ vi program.spec

Далее см. Spec file pieces explained

Вывести список наименований групп софта (поле Group спека)

less /usr/share/doc/rpm-4.6.1/GROUPS

или

LANG=C; yum grouplist

Смотреть какие пакеты входят в группу, например "System Tools" :

yum groupinfo "System Tools"

Чтобы посмотреть, как разворачивается макрос %makeinstall

rpm --eval '%makeinstall'

Или любой другой макрос для определенного спека, например

rpmbuild -E '%{_bindir}' myfile.spec