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-макросы
Содержание