RPM Macros Packaging Policy: различия между версиями
Ilis (обсуждение | вклад) |
|||
Строка 5: | Строка 5: | ||
}} | }} | ||
== Политика упаковки макросов rpm и расширений | == Политика упаковки макросов rpm и расширений rpm-build == | ||
* Файлы с макросами должны лежать в | * Файлы с макросами должны лежать в {{path|/etc/rpm/macros.d/}} (не в {{path|/etc/rpm/}}) | ||
* Файлы с макросами должны находиться в отдельном пакете с именем | * Файлы с макросами должны находиться в отдельном пакете с именем {{pkg|rpm-build-<name>}} или {{pkg|rpm-macros-<name>}}. | ||
* Файлы | * Файлы {{path|<name>-files.req.list}}, определяющие зависимости на каталоги, и другие {{path|*.req*}}/{{path|*.prov*}} файлы должны лежать в {{path|%_rpmlibdir}} ({{path|/usr/lib/rpm/}}). | ||
* Файлы | * Файлы {{path|<name>-files.req.list}} и другие {{path|*.req*}}/{{path|*.prov*}} файлы рекомендуется выделять в отдельный пакет с именем {{pkg|rpm-build-<name>}}. | ||
* Пакет | * Пакет {{pkg|rpm-build-%name}} должен предоставлять всё необходимое для сборки бинарного пакета ({{cmd|rpmbuild -bb/-ba}}). | ||
* Пакет | * Пакет {{pkg|rpm-macros-%name}} должен предоставлять всё необходимое для сборки исходного пакета ({{cmd|rpmbuild -bs --nodeps}}). | ||
* Пакет | * Пакет {{pkg|%name-devel}} должен иметь зависимость на {{pkg|rpm-build-%name}}. | ||
* Пакет | * Пакет {{pkg|rpm-build-%name}} должен иметь зависимость на (или включать в себя) {{pkg|rpm-macros-%name}}. | ||
* Пакет | * Пакет {{pkg|rpm-macros-%name}} не должен иметь сторонних зависимостей, кроме тех, которые необходимы для раскрытия содержащихся в нём макросов. | ||
'''Рекомендуется''' выделять пакет | '''Рекомендуется''' выделять пакет {{pkg|rpm-macros-%name}} из {{pkg|rpm-build-%name}}, в случае, если у того {{path|*.req*}}/{{path|*.prov*}} файлы имеют сторонние зависимости. | ||
Решение о выделении | Решение о выделении {{pkg|rpm-macros-%name}} в отдельный от {{pkg|rpm-build-%name}} пакет принимает мантейнер соответствующего пакета. | ||
'''Рекомендуется''' выделять пакет | '''Рекомендуется''' выделять пакет {{pkg|rpm-build-%name}}/{{pkg|rpm-macros-%name}} из {{pkg|%name-devel}}, | ||
чтобы явно выделить пакеты, нужные для для сборки исходного пакета ( | чтобы явно выделить пакеты, нужные для для сборки исходного пакета ({{cmd|rpmbuild -bs --nodeps}}), в отдельную группу. | ||
'''Разрешается (но не рекомендуется)''' не выделять отдельно пакет | '''Разрешается (но не рекомендуется)''' не выделять отдельно пакет {{pkg|rpm-build-%name}} (и, возможно, {{pkg|rpm-macros-%name}}) из {{pkg|%name-devel}} если выделение {{pkg|rpm-build-%name}} из {{pkg|%name-devel}} не приводит к уменьшению pre-сборочных зависимостей (зависимостей, необходимых для сборки {{path|.src.rpm}}). | ||
если выделение | Например, если пакет с макросами входит в {{pkg|basesystem}}, или не имеет существенных зависимостей вне {{pkg|basesystem}}. | ||
Например, если пакет с макросами входит в | |||
'''Разрешается''' не выделять отдельно пакет | '''Разрешается''' не выделять отдельно пакет {{pkg|rpm-build-%name}} из {{pkg|%name-devel}}, если последний не содержит файлов с макросами, а только расширения {{pkg|rpm-build}}. Также, принято не выделять {{pkg|rpm-build-%name}} из {{pkg|%name-devel}} | ||
из-за единственного файла | из-за единственного файла {{path|<name>-files.req.list}}. | ||
=== Аргументация === | === Аргументация === | ||
Строка 34: | Строка 33: | ||
'''Эта секция не является нормативной''' | '''Эта секция не является нормативной''' | ||
В общем случае, файл с макросами rpm связан с каким-то из | В общем случае, файл с макросами rpm связан с каким-то из {{pkg|-devel}} пакетов. Например, макросы для упаковки {{pkg|perl}} приложений содержатся в пакете {{pkg|rpm-build-perl}}, связанном с пакетом {{pkg|perl-devel}}. Иногда макросы для упаковки могут лежать и прямо в {{pkg|-devel}} пакете, как в случае {{pkg|gconf-devel}}. Последний случай плох тем, что для исполнения команды {{cmd|rpmbuild -bs}} в хост-системе нужно устанавливать весь {{pkg|-devel}} пакет и его зависимости. Этого не случилось бы, будь макросы выделены в отдельный подпакет. | ||
Пакеты с макросами должны называться | Пакеты с макросами должны называться {{pkg|rpm-build-<name>}}/{{pkg|rpm-macros-<name>}} чтобы их было легко найти и установить, и не должны иметь зависимостей, чтобы не засорять хост-сиситему. |
Версия от 15:43, 21 ноября 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-build-%name из %name-devel из-за единственного файла <name>-files.req.list.
Аргументация
Эта секция не является нормативной
В общем случае, файл с макросами rpm связан с каким-то из -devel пакетов. Например, макросы для упаковки perl приложений содержатся в пакете rpm-build-perl, связанном с пакетом perl-devel. Иногда макросы для упаковки могут лежать и прямо в -devel пакете, как в случае gconf-devel. Последний случай плох тем, что для исполнения команды rpmbuild -bs в хост-системе нужно устанавливать весь -devel пакет и его зависимости. Этого не случилось бы, будь макросы выделены в отдельный подпакет.
Пакеты с макросами должны называться rpm-build-<name>/rpm-macros-<name> чтобы их было легко найти и установить, и не должны иметь зависимостей, чтобы не засорять хост-сиситему.