rpmbuild% {dist} не определен в CentOS 5.5? - PullRequest
24 голосов
/ 27 февраля 2011

Я пытаюсь использовать тег %{dist} в моем файле спецификаций RPM, чтобы обеспечить зависящие от распределения зависимости между Fedora Core (например, fc12), CentOS 5 (например, el5) иAmazon AMI для Linux:

Release: %_svn_revision%{?dist}

и

# Depencencies
%{?rhel:Requires: ...}
%{?fedora:Requires: ...}

К сожалению, %{dist}, по-видимому, не определено в CentOS 5.5, и я не нашел условное выражение для конкретного распределенияэто соответствует CentOS 5.5 (я думал, что el5 будет соответствовать, но не похоже). В этом билете сообщалось об отсутствии %{dist} в CentOS в 2008 году, но он не обновлялся с 2009 года.

Как определить %{dist} в CentOS и какие условия следует использоватьсоответствовать CentOS 5?Может ли любой RPM-гуру указать мне правильное направление?

Ответы [ 2 ]

36 голосов
/ 31 марта 2011

Макросы dist не определены в CentOS 5, потому что его нет в /etc/rpm/macros.disttag - есть RPM с именем buildsys-macros-rhel, который его предоставляет, или buildsys-macros на fedora, но по какой-то причине он не переупаковывается по Centos.

Вариант 1) Загрузите и установите макросы сборки fedora из здесь

Вариант 2) каждый раз вызывать rpmbuild --define 'dist .el5'

Вариант 3) Вручную отредактируйте /etc/rpm/macros.disttag, чтобы добавить определения макросов для rhel (5) и dist (.el5).

Затем вы можете использовать такие условия в вашем файле спецификации:

%if 0%{?rhel}  == 5
%{Requires: foo}
%endif 
5 голосов
/ 04 января 2013

Другой вариант - вызвать скрипт в вашем собственном макросе в файле спецификации:

%define distribution        %(/usr/lib/rpm/redhat/dist.sh --distnum)

, который вызывает скрипт, который является частью конфигурации rpm (redhat-rpm-config).Вы также можете убедиться, что этот скрипт есть, включив:

BuildRequires:              redhat-rpm-config

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

%if %{distribution} == 5
    Requires:                   glibc.i686, libXext.i386, libXtst.i386
%else
    Requires:                   glibc.i686, libXext.i686, libXtst.i686
%endif
...