RPM Макросы
Макросы RPM — это прямые текстовые подстановки, которые происходят путём замены определённых выражений и условий на соответствующий текст во время процесса сборки пакета. Имена макросов начинаются с символа %
. Они представляют собой сокращённые псевдонимы для часто используемых фрагментов текста.
Для чего нужны макросы:
- Обеспечить желаемую функциональность: Пакеты в репозитории Сизиф должны отвечать определённым правилам, для этого Spec-файлы должны обеспечивать выполнение этих правил;
- Помочь разработчику: Spec-файлы пишут люди, следовательно, их работу нужно свести к минимуму, который и требует участия человека. Мейнтейнер не должен копировать блоки кода из файла в файл, так как данная работа занимает время, силы и может привести к ошибкам. Для таких случаев существуют макросы. Если какой-то код появляется в разных Spec-файлах более одного раза, то надо написать макрос(ы);
- Сделать Spec-файлы более читаемыми: Людям, пересобирающим или собирающим новый аналогичный пакет, опираясь на другие Spec-файлы, будет проще адаптировать их, если в наименовании, расположении и использовании различных элементов Spec-файлов будет определённый порядок.
Просмотреть список доступных макросов и их значения можно, выполнив команду:
rpm --showrc
Получить значение, раскрываемое макросом можно, использовав команду rpm --eval {<имя_макроса>}
.
К примеру, так можно узнать значение макроса %_sysconfdir
:
$ 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 | ---- |
Прочие макросы
Макрос | Замена | Описание |
---|---|---|
%intel | i386 , i486 , i586 , i686 , i786 , i886 , i986 , pentium2 , pentium3 , pentium4 | Список архитектур Intel, совместимых с i386 |
%amd | k6 , athlon , athlon_xp | Список архитектур AMD, совместимых с i386 |
%ix86 | i386 , i486 , i586 , i686 , i786 , i886 , i986 , pentium2 , pentium3 , pentium4 , k6 , athlon , athlon_xp | Список всех архитектур, совместимых с i386 |
Подробный список предопределённых макросов можно найти на страницах: Предопределённые макросы и Макросы по категориям.
Список задач для участников ALT Packaging Guide
- Рассказать об пользовательских макросах