Подтвердить что ты не робот

Rpmbuild% {dist} не определен в CentOS 5.5?

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

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 указать мне в правильном направлении?

4b9b3361

Ответ 1

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

Вариант 1) Загрузите и установите Fedora build-macros из здесь

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

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

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

%if 0%{?rhel}  == 5
%{Requires: foo}
%endif 

Ответ 2

Другим вариантом является вызов script внутри вашего собственного макроса в файле spec:

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

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

BuildRequires:              redhat-rpm-config

а затем выполните то же условие, что и ggiroux:

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