2011-02-27 174 views
23

我試圖使用%{dist}標籤在我的RPM規範文件提供的Fedora Core(如fc12),CentOS 5的(如el5)和亞馬遜公司的Linux AMI之間的具體分佈依賴性:rpmbuild%{dist}未在CentOS 5.5中定義?

Release: %_svn_revision%{?dist} 

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

不幸的是,%{dist}沒有出現在CentOS的5.5加以界定,而我還沒有找到相匹配的CentOS 5.5(我想el5將匹配,但不會出現)分發特定的條件。 This票報CentOS的缺失%{dist}在2008年,但自2009年以來

我怎樣才能%{dist}在CentOS的定義,我應該用什麼條件來匹配的CentOS 5一直沒有更新? 任何RPM專家都可以指出我的方向嗎?

回答

35

遠程宏在CentOS 5上沒有定義,因爲它不在/etc/rpm/macros.disttag - 有一個名爲buildsys-macros-rhel的RPM提供它,或者在Fedora上有buildsys-macros,但由於某些原因它沒有被Centos重新包裝。

選項1)下載並安裝Fedora構建的宏從here

選項2)調用的rpmbuild --define 'DIST .el5' 每次

選項3)手動編輯/ etc /轉/宏.disttag爲rhel(5)和dist(.el5)添加宏定義。

然後可以使用這樣的條件語句在您的spec文件:

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

集結宏EL5的伎倆。謝謝你的回答。 – 2011-04-01 02:59:35

+0

請注意,從CentOS 5.7開始,發行版中提供了'buildsys-macros'。參見[Redhat Advisory](http://rhn.redhat.com/errata/RHEA-2011-0985.html)以及[Redhat Bug 613985](https://bugzilla.redhat.com/show_bug.cgi?id = 613985) – 2013-09-11 21:53:49

5

另一種選擇是在規範文件來調用自己的宏中的腳本:

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

它調用的腳本這是config 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