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