rpm spec: условное требование на основе версии дистрибутива

8

Я пытаюсь написать одну спецификацию rpm для RHEL / CentOS / SL 5 и 6. Эта спецификация для приложения на python, поэтому нет никаких отличий в процессе сборки. Но на RHEL / CentOS5 мне нужно добавить еще одну зависимость.

Как бы я определил зависимость только для el5? Я пробовал следующее:

%if 0%{?redhat} == 5 || 0%{?centos} == 5
Requires:   kmod-coretemp
%endif

Не работает (сборка на CentOS5 не добавляет зависимости kmod-coretemp).

Я пробовал также следующее:

%if %{?dist} == "el5"

Сообщает с синтаксической ошибкой. Я уверен, что макрос dist установлен и содержит 'el5'. Но я не уверен, каков синтаксис условных операторов if в rpm? rpmguide не имеет подробного ответа.

RVS
источник

Ответы:

8

Вики Fedora, как обычно, предоставляют лучшие рекомендации по упаковке. Взгляните на страницу Упаковка: DistTag . Вы можете использовать %{el5}переменную и условное сокращение, чтобы убедиться, что соответствующая Requireстрока используется при сборке пакетов для EL5.

%{?el5:Requires: kmod-coretemp}

Возможно, вы захотите добавить distтег в поле версии, чтобы избежать путаницы между пакетами:

Release: 1%{?dist}

См. Назначение тега Dist .

Дэн Карли
источник
Спасибо! В моей системе по какой-то причине этого нет, но я определил макрос вручную. Извините, помечаю Игнасио ответ как принятый, так как он был первым.
RVS
1
Если они отсутствуют, вам может понадобиться установить пакет redhat-rpm-configиз Yum.
Дэн Карли
Это установлено, но все еще нет макросов. Я считаю, что это специфично для Centos, так как на других машинах rhel5 они установлены.
RVS