RPM Macros Packaging Policy: различия между версиями

Материал из ALT Linux Wiki
м (Замена <tt> на <code>)
м (Форматирование: <code> для команд/путей/имён пакетов, <tt> для терминов.)
Строка 5: Строка 5:
}}
}}


== Политика упаковки макросов rpm и расширений rpm-build ==
== Политика упаковки макросов rpm и расширений <code>rpm-build</code> ==


* Файлы с макросами должны лежать в <code>/etc/rpm/macros.d/</code> (не в <code>/etc/rpm/</code>)
* Файлы с макросами должны лежать в <code>/etc/rpm/macros.d/</code> (не в <code>/etc/rpm/</code>)
Строка 11: Строка 11:
* Файлы <code><name>-files.req.list</code>, определяющие зависимости на каталоги, и другие <code>*.req*</code>/<code>*.prov*</code> файлы должны лежать в <code>%_rpmlibdir</code> (<code>/usr/lib/rpm/</code>).
* Файлы <code><name>-files.req.list</code>, определяющие зависимости на каталоги, и другие <code>*.req*</code>/<code>*.prov*</code> файлы должны лежать в <code>%_rpmlibdir</code> (<code>/usr/lib/rpm/</code>).
* Файлы <code><name>-files.req.list</code> и другие <code>*.req*</code>/<code>*.prov*</code> файлы должны находиться в отдельном пакете с именем <code>rpm-build-<name></code>.
* Файлы <code><name>-files.req.list</code> и другие <code>*.req*</code>/<code>*.prov*</code> файлы должны находиться в отдельном пакете с именем <code>rpm-build-<name></code>.
* Пакет <code>rpm-build-%name</code> должен предоставять всё необходимое для сборки бинарного пакета (rpmbuild -bb/-ba).
* Пакет <code>rpm-build-%name</code> должен предоставять всё необходимое для сборки бинарного пакета (<code>rpmbuild -bb/-ba</code>).
* Пакет <code>rpm-macros-%name</code> должен предоставлять всё необходимое для сборки исходного пакета (rpmbuild -bs --nodeps).
* Пакет <code>rpm-macros-%name</code> должен предоставлять всё необходимое для сборки исходного пакета (<code>rpmbuild -bs --nodeps</code>).
* Пакет <code>%name-devel</code> должен иметь зависимость на <code>rpm-build-%name</code>.
* Пакет <code>%name-devel</code> должен иметь зависимость на <code>rpm-build-%name</code>.
* Пакет <code>rpm-build-%name</code> должен иметь зависимость на (или включать в себя) rpm-macros-%name.
* Пакет <code>rpm-build-%name</code> должен иметь зависимость на (или включать в себя) <code>rpm-macros-%name</code>.
* Пакет <code>rpm-macros-%name</code> не должен иметь сторонних зависимостей, кроме тех, которые необходимы для раскрытия содержащихся в нём макросов.
* Пакет <code>rpm-macros-%name</code> не должен иметь сторонних зависимостей, кроме тех, которые необходимы для раскрытия содержащихся в нём макросов.


Строка 21: Строка 21:


'''Рекомендуется''' выделять пакет <code>rpm-build-%name</code>/<code>rpm-macros-%name</code> из <code>%name-devel</code>,
'''Рекомендуется''' выделять пакет <code>rpm-build-%name</code>/<code>rpm-macros-%name</code> из <code>%name-devel</code>,
чтобы явно выделить пакеты, нужные для для сборки исходного пакета (rpmbuild -bs --nodeps), в отдельную группу.
чтобы явно выделить пакеты, нужные для для сборки исходного пакета (<code>rpmbuild -bs --nodeps</code>), в отдельную группу.


'''Разрешается (но не рекомендуется)''' не выделять отдельно пакет <code>rpm-build-%name</code> (и, возможно, rpm-macros-%name) из <code>%name-devel</code>
'''Разрешается (но не рекомендуется)''' не выделять отдельно пакет <code>rpm-build-%name</code> (и, возможно, <code>rpm-macros-%name</code>) из <code>%name-devel</code>
если выделение rpm-build-%name из %name-devel не приводит к уменьшению pre-сборочных зависимостей (зависимостей, необходимых для сборки .src.rpm).
если выделение <code>rpm-build-%name</code> из <code>%name-devel</code> не приводит к уменьшению pre-сборочных зависимостей (зависимостей, необходимых для сборки <code>.src.rpm</code>).
Например, если пакет с макросами входит в basesystem, или не имеет существенных зависимостей вне basesystem.
Например, если пакет с макросами входит в <tt>basesystem</tt>, или не имеет существенных зависимостей вне <tt>basesystem</tt>.


'''Разрешается''' не выделять отдельно пакет <code>rpm-build-%name</code> из <code>%name-devel</code>, если последний не содержит файлов с макросами, а только
'''Разрешается''' не выделять отдельно пакет <code>rpm-build-%name</code> из <code>%name-devel</code>, если последний не содержит файлов с макросами, а только
расширения rpm-build.
расширения <code>rpm-build</code>.


=== Аргументация ===
=== Аргументация ===
Строка 34: Строка 34:
'''Эта секция не является нормативной'''
'''Эта секция не является нормативной'''


В общем случае, файл с макросами rpm связан с каким-то из -devel пакетов. Например, макросы для упаковки perl приложений содержатся в пакете <code>rpm-build-perl</code>, связанном с пакетом <code>perl-devel</code>. Иногда макросы для упаковки могут лежать и прямо в -devel пакете, как в случае <code>gconf-devel</code>. Последний случай плох тем, что для исполнения команды <code>rpmbuild -bs</code> в хост-системе нужно устанавливать весь -devel пакет и его зависимости. Этого не случилось бы, будь макросы выделены в отдельный подпакет.
В общем случае, файл с макросами rpm связан с каким-то из <tt>-devel</tt> пакетов. Например, макросы для упаковки <tt>perl</tt> приложений содержатся в пакете <code>rpm-build-perl</code>, связанном с пакетом <code>perl-devel</code>. Иногда макросы для упаковки могут лежать и прямо в <tt>-devel</tt> пакете, как в случае <code>gconf-devel</code>. Последний случай плох тем, что для исполнения команды <code>rpmbuild -bs</code> в хост-системе нужно устанавливать весь -devel пакет и его зависимости. Этого не случилось бы, будь макросы выделены в отдельный подпакет.


Пакеты с макросами должны называться <code>rpm-build-<name></code>/<code>rpm-macros-<name></code> чтобы их было легко найти и установить, и не должны иметь зависимостей, чтобы не засорять хост-сиситему.
Пакеты с макросами должны называться <code>rpm-build-<name></code>/<code>rpm-macros-<name></code> чтобы их было легко найти и установить, и не должны иметь зависимостей, чтобы не засорять хост-сиситему.

Версия от 19:14, 19 ноября 2008

Stub.png
Черновик политики Sisyphus
Автор(ы) — Игорь Власенко
Обсуждение в devel@
Обсуждается с 26.05.2008


Политика упаковки макросов rpm и расширений rpm-build

  • Файлы с макросами должны лежать в /etc/rpm/macros.d/ (не в /etc/rpm/)
  • Файлы с макросами должны находиться в отдельном пакете с именем rpm-build-<name> или rpm-macros-<name>.
  • Файлы <name>-files.req.list, определяющие зависимости на каталоги, и другие *.req*/*.prov* файлы должны лежать в %_rpmlibdir (/usr/lib/rpm/).
  • Файлы <name>-files.req.list и другие *.req*/*.prov* файлы должны находиться в отдельном пакете с именем rpm-build-<name>.
  • Пакет rpm-build-%name должен предоставять всё необходимое для сборки бинарного пакета (rpmbuild -bb/-ba).
  • Пакет rpm-macros-%name должен предоставлять всё необходимое для сборки исходного пакета (rpmbuild -bs --nodeps).
  • Пакет %name-devel должен иметь зависимость на rpm-build-%name.
  • Пакет rpm-build-%name должен иметь зависимость на (или включать в себя) rpm-macros-%name.
  • Пакет rpm-macros-%name не должен иметь сторонних зависимостей, кроме тех, которые необходимы для раскрытия содержащихся в нём макросов.

Рекомендуется выделять пакет rpm-macros-%name из rpm-build-%name, в случае, если у того *.req*/*.prov* файлы имеют сторонние зависимости. Решение о выделении rpm-macros-%name в отдельный от rpm-build-%name пакет принимает мантейнер соответствующего пакета.

Рекомендуется выделять пакет rpm-build-%name/rpm-macros-%name из %name-devel, чтобы явно выделить пакеты, нужные для для сборки исходного пакета (rpmbuild -bs --nodeps), в отдельную группу.

Разрешается (но не рекомендуется) не выделять отдельно пакет rpm-build-%name (и, возможно, rpm-macros-%name) из %name-devel если выделение rpm-build-%name из %name-devel не приводит к уменьшению pre-сборочных зависимостей (зависимостей, необходимых для сборки .src.rpm). Например, если пакет с макросами входит в basesystem, или не имеет существенных зависимостей вне basesystem.

Разрешается не выделять отдельно пакет rpm-build-%name из %name-devel, если последний не содержит файлов с макросами, а только расширения rpm-build.

Аргументация

Эта секция не является нормативной

В общем случае, файл с макросами rpm связан с каким-то из -devel пакетов. Например, макросы для упаковки perl приложений содержатся в пакете rpm-build-perl, связанном с пакетом perl-devel. Иногда макросы для упаковки могут лежать и прямо в -devel пакете, как в случае gconf-devel. Последний случай плох тем, что для исполнения команды rpmbuild -bs в хост-системе нужно устанавливать весь -devel пакет и его зависимости. Этого не случилось бы, будь макросы выделены в отдельный подпакет.

Пакеты с макросами должны называться rpm-build-<name>/rpm-macros-<name> чтобы их было легко найти и установить, и не должны иметь зависимостей, чтобы не засорять хост-сиситему.