RPM допускает определение макросов в нескольких местах, включая spec-файл (возможно, наиболее общий случай использования), специальные файлы макросов, командную строку.
Во всех случаях синтаксис применения будет похожим.
 20.1.1.1 Определение макроса в spec-файле 
В spec-файле есть несколько мест, пригодных для задания макросов. Для этого используется директива %define и следующий синтаксис:
| 
 %define name(options) body   | 
options являются необязательными параметрами и могут включать специальные значения, указанные в таблице ниже:
| 
 Опция  | 
 Содержит  | 
| 
 %0  | 
 Имя макроса  | 
| 
 %1  | 
 Первый аргумент после флагов, разобранных getopt  | 
| 
 %2-%9  | 
 Дополнительные аргументы  | 
| 
 %*  | 
 Все аргументы кроме флагов, которые должны быть разобраны  | 
| 
 %#  | 
 Число агрументов  | 
В целом эти опции сходны с таковыми в shell-скриптах.
В дополнение к возможности использовать эти опции можно использовать синтаксис %{-a}. Это выражение хранит -a, если опция -a передавалась. Синтаксис %{-a*} указывает на значение, следующее за -a.
Также можно придать макросу значение, которое возвращается shell-командой. Для этого используется такое выражение:
| 
 %(shell_command)   | 
 20.1.1.2 Определение макроса в файле инициализации макросов 
Внутри файлов инициализации макросов используется следующий синтаксис:
| 
 %macro_name value   | 
Макрос, предназначенный для управления системой RPM, начинается с нижнего подчеркивания. Такие макросы не экспортируются в хэдеры пакетов.
Встроенный макрос %expand каким-либо образом расширяет значение. Например, для расширения значения может использоваться shell-команда. В следующем примере задается домашний каталог пользователя для макроса %home:
| 
 %home %{expand:%%(cd; pwd)}   | 
Возможно, прямое задание макроса %home в пользовательском файле инициализации макросов $HOME/.rpmmacros будет более простым ходом.
 20.1.1.3 Определение макроса в командной строке 
Утилита rpm позволяет задать макрос из командной строки:
| 
 $ rpm --define 'macro_name value'   | 
Не предваряйте макрос символом процентов, если задаете его с помощью --define.
Раскрыть значение макроса можно командой с опцией --eval:
| 
 $ rpm --eval %_usrsrc   | 
 Далее - Пользовательские макросы 
 Назад - Настройка поведения через RPM-макросы 
 Содержание