Skip to content

RPM Макросы

Макросы RPM — это прямые текстовые подстановки, которые происходят путём замены определённых выражений и условий на соответствующий текст во время процесса сборки пакета. Имена макросов начинаются с символа %. Они представляют собой сокращённые псевдонимы для часто используемых фрагментов текста.

Для чего нужны макросы:

  • Обеспечить желаемую функциональность: Пакеты в репозитории Сизиф должны отвечать определённым правилам, для этого Spec-файлы должны обеспечивать выполнение этих правил;
  • Помочь разработчику: Spec-файлы пишут люди, следовательно, их работу нужно свести к минимуму, который и требует участия человека. Мейнтейнер не должен копировать блоки кода из файла в файл, так как данная работа занимает время, силы и может привести к ошибкам. Для таких случаев существуют макросы. Если какой-то код появляется в разных Spec-файлах более одного раза, то надо написать макрос(ы);
  • Сделать Spec-файлы более читаемыми: Людям, пересобирающим или собирающим новый аналогичный пакет, опираясь на другие Spec-файлы, будет проще адаптировать их, если в наименовании, расположении и использовании различных элементов Spec-файлов будет определённый порядок.

Просмотреть список доступных макросов и их значения можно, выполнив команду:

shell
rpm --showrc

Получить значение, раскрываемое макросом можно, использовав команду rpm --eval {<имя_макроса>}.

К примеру, так можно узнать значение макроса %_sysconfdir:

shell
$ rpm --eval %_sysconfdir
/etc

Макросы можно использовать внутри других макросов. Если название архива исходных текстов проекта формируется из его имени и версии (директивы Name и Version транслируются в определённые макросы, о чём будет рассказано ниже), то директива пути к файлу может выглядеть следующим образом:

Source0: %{name}-%{version}.tar.gz

Макросы путей системных каталогов

Основные каталоги

МакросЗаменаОписание
%_usr/usr------
%_var/var-----
%_bindir/usr/bin----
%_sbindir/usr/sbin----
%_libexecdir/usr/lib----
%_localstatedir/var/lib----
%_datadir/usr/share----
%_tmpfilesdir/lib/tmpfiles.d----
%_desctopdir/usr/share/application----

Макросы меню

МакросЗаменаОписание
%_menudir/usr/lib/menu----
%_iconsdir/usr/share/icons----
%_miconsdir/usr/share/icons/hicolor/16x16/apps----
%_liconsdir/usr/share/icons/hicolor/48x48/apps----

Другие системные макросы

МакросЗаменаОписание
%_initdir/etc/rc.d/init.d----
%_lockdir/var/lock----
%_logdir/var/log----

Прочие макросы

МакросЗаменаОписание
%inteli386, i486, i586, i686, i786, i886, i986, pentium2, pentium3, pentium4Список архитектур Intel, совместимых с i386
%amdk6, athlon, athlon_xpСписок архитектур AMD, совместимых с i386
%ix86i386, i486, i586, i686, i786, i886, i986, pentium2, pentium3, pentium4, k6, athlon, athlon_xpСписок всех архитектур, совместимых с i386

Подробный список предопределённых макросов можно найти на страницах: Предопределённые макросы и Макросы по категориям.

Список задач для участников ALT Packaging Guide

  • Рассказать об пользовательских макросах

Авторы

The avatar of contributor named as x1z53 x1z53
The avatar of contributor named as Олег Щавелев Олег Щавелев
The avatar of contributor named as Valentin Sokolov Valentin Sokolov

История изменений