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 ответа:
Макрос 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