RPM Macros Packaging Policy: различия между версиями
м (Замена <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
Политика упаковки макросов 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>
чтобы их было легко найти и установить, и не должны иметь зависимостей, чтобы не засорять хост-сиситему.