rpmbuild %{dist} не определен на CentOS 5.5?


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

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 23

2 ответа:

Макрос 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 / макросы.disttag для добавления макроопределений для rhel (5) и dist (.el5).

Затем вы можете использовать условные обозначения, подобные этому, в файле спецификации:

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

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

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

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

BuildRequires:              redhat-rpm-config

И затем сделайте то же самое условное, что определил Гиру:

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