RPM Macros Packaging Policy
Материал из ALT Linux Wiki
м (более заметная формулировка; +ссылка на ту же тему) |
|||
(9 промежуточных версий не показаны.) | |||
Строка 1: | Строка 1: | ||
- | {{ | + | {{Policy |
|responsible=Игорь Власенко | |responsible=Игорь Власенко | ||
- | | | + | |since_branch=5.0 |
- | | | + | |metabug=repocop test altlinux-policy-rpm-macros-packaging |
}} | }} | ||
- | == Политика упаковки макросов | + | == Политика упаковки макросов RPM и расширений rpm-build == |
* Файлы с макросами должны лежать в {{path|/usr/lib/rpm/macros.d/}} (текущее значение макроса {{rpmmacro|_rpmmacrosdir}}). | * Файлы с макросами должны лежать в {{path|/usr/lib/rpm/macros.d/}} (текущее значение макроса {{rpmmacro|_rpmmacrosdir}}). | ||
* Для поддержания обратной совместимости разрешается (но не рекомендуется) держать файлы с макросами в {{path|/etc/rpm/macros.d}} (не в {{path|/etc/rpm/}}). В следующей крупной редакции этой политики директория {{path|/etc/rpm/macros.d}} будет запрещена. | * Для поддержания обратной совместимости разрешается (но не рекомендуется) держать файлы с макросами в {{path|/etc/rpm/macros.d}} (не в {{path|/etc/rpm/}}). В следующей крупной редакции этой политики директория {{path|/etc/rpm/macros.d}} будет запрещена. | ||
* Файлы с макросами должны находиться в отдельном пакете с именем {{pkg|rpm-build-%name}} или {{pkg|rpm-macros-%name}}. | * Файлы с макросами должны находиться в отдельном пакете с именем {{pkg|rpm-build-%name}} или {{pkg|rpm-macros-%name}}. | ||
- | * Файлы {{path|%name-files.req.list}}, определяющие зависимости на каталоги, и другие {{path|*.req*}}/{{path|*.prov*}} файлы должны лежать в {{rpmmacro|_rpmlibdir}} ({{path|/usr/lib/rpm/}}). | + | * Файлы {{path|[[RPMFilesReqList|%name-files.req.list]]}}, определяющие зависимости на каталоги, и другие {{path|*.req*}}/{{path|*.prov*}} файлы должны лежать в {{rpmmacro|_rpmlibdir}} ({{path|/usr/lib/rpm/}}). |
* Файлы {{path|%name-files.req.list}} и другие {{path|*.req*}}/{{path|*.prov*}} файлы рекомендуется выделять в отдельный пакет с именем {{pkg|rpm-build-%name}}. | * Файлы {{path|%name-files.req.list}} и другие {{path|*.req*}}/{{path|*.prov*}} файлы рекомендуется выделять в отдельный пакет с именем {{pkg|rpm-build-%name}}. | ||
* Пакет {{pkg|rpm-build-%name}} должен предоставлять всё необходимое для сборки бинарных пакетов ({{cmd|rpmbuild -bb/-ba}}). | * Пакет {{pkg|rpm-build-%name}} должен предоставлять всё необходимое для сборки бинарных пакетов ({{cmd|rpmbuild -bb/-ba}}). | ||
Строка 27: | Строка 27: | ||
'''Разрешается''' не выделять отдельно пакет {{pkg|rpm-build-%name}} из {{pkg|%name-devel}}, если последний не содержит файлов с макросами, а только расширения {{pkg|rpm-build}}. Также, принято не выделять {{pkg|rpm-build-%name}} из {{pkg|%name-devel}} | '''Разрешается''' не выделять отдельно пакет {{pkg|rpm-build-%name}} из {{pkg|%name-devel}}, если последний не содержит файлов с макросами, а только расширения {{pkg|rpm-build}}. Также, принято не выделять {{pkg|rpm-build-%name}} из {{pkg|%name-devel}} | ||
- | из-за единственного файла {{path|%name-files.req.list}}. | + | из-за единственного файла {{path|[[RPMFilesReqList|%name-files.req.list]]}}. |
+ | |||
+ | '''Рекомендуется''' в пакетах {{pkg|rpm-build-*}} и {{pkg|rpm-macros-*}} несовместимость с определёнными | ||
+ | релизами {{pkg|rpm-build}} выражать с помощью Conflicts. | ||
+ | '''Запрещается''' в пакетах {{pkg|rpm-build-*}} и {{pkg|rpm-macros-*}} иметь зависимость (Requires или PreReq) на {{pkg|rpm-build}} (без иных особых причин). | ||
=== Аргументация === | === Аргументация === | ||
Строка 36: | Строка 40: | ||
Пакеты с макросами должны называться {{pkg|rpm-build-%name}}/{{pkg|rpm-macros-%name}} чтобы их было легко найти и установить, и не должны иметь зависимостей, чтобы не засорять хост-сиситему. | Пакеты с макросами должны называться {{pkg|rpm-build-%name}}/{{pkg|rpm-macros-%name}} чтобы их было легко найти и установить, и не должны иметь зависимостей, чтобы не засорять хост-сиситему. | ||
+ | |||
+ | {{pkg|rpm-build-%name}} идёт (по требованию этого policy) вместе с {{pkg|%name-devel}} всегда (как небольшой довесок на случай сборки пакетов с помощью {{pkg|%name-devel}}). Но не все, кто ставит {{pkg|%name-devel}}, хотят собирать RPM, и им не нужна дополнительная нагрузка в виде {{pkg|rpm-build}} и его зависимостей.[https://lists.altlinux.org/pipermail/devel/2007-November/147373.html] А у тех, кто собирается собирать RPM, будет поставлен {{pkg|rpm-build}} и так.[https://lists.altlinux.org/pipermail/devel/2015-October/200301.html] | ||
+ | |||
+ | [[Категория:RPM]] |
Текущая версия на 14:54, 1 июня 2016
Политика упаковки макросов RPM и расширений rpm-build
- Файлы с макросами должны лежать в /usr/lib/rpm/macros.d/ (текущее значение макроса %_rpmmacrosdir).
- Для поддержания обратной совместимости разрешается (но не рекомендуется) держать файлы с макросами в /etc/rpm/macros.d (не в /etc/rpm/). В следующей крупной редакции этой политики директория /etc/rpm/macros.d будет запрещена.
- Файлы с макросами должны находиться в отдельном пакете с именем 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-build-* и rpm-macros-* несовместимость с определёнными релизами rpm-build выражать с помощью Conflicts. Запрещается в пакетах rpm-build-* и rpm-macros-* иметь зависимость (Requires или PreReq) на rpm-build (без иных особых причин).
Аргументация
Эта секция не является нормативной
В общем случае, файл с макросами rpm связан с каким-то из -devel пакетов. Например, макросы для упаковки perl приложений содержатся в пакете rpm-build-perl, связанном с пакетом perl-devel. Иногда макросы для упаковки могут лежать и прямо в -devel пакете, как в случае gconf-devel. Последний случай плох тем, что для исполнения команды rpmbuild -bs в хост-системе нужно устанавливать весь -devel пакет и его зависимости. Этого не случилось бы, будь макросы выделены в отдельный подпакет.
Пакеты с макросами должны называться rpm-build-%name/rpm-macros-%name чтобы их было легко найти и установить, и не должны иметь зависимостей, чтобы не засорять хост-сиситему.
rpm-build-%name идёт (по требованию этого policy) вместе с %name-devel всегда (как небольшой довесок на случай сборки пакетов с помощью %name-devel). Но не все, кто ставит %name-devel, хотят собирать RPM, и им не нужна дополнительная нагрузка в виде rpm-build и его зависимостей.[1] А у тех, кто собирается собирать RPM, будет поставлен rpm-build и так.[2]