2010-09-15 100 views
1

不是真的肯定,如果這屬於這裏......但RPM需要一個包的I386版本

我成功地建設爲CentOS的RPM,問題是,它是一個32位二進制(不問..) - RPM規範的require部分僅安裝所需庫的64位/ x86_64版本。

我連接到libicu,我想讓rpm自動安裝32位版本作爲依賴關係。我需要看起來像這樣在我rpmspec文件:

Requires: libicu 

構建轉工作正常,但如果我嘗試將其百勝要安裝此作爲依賴一個完全乾淨的系統上安裝RPM:

libicu x86_64 

這不起作用,因爲那只是庫的x86_64版本。如果我嘗試手動安裝libicu:

yum install libicu 

我得到:

libicu x86_64 
libicu i386 

它安裝庫的32位版本,以及和我的應用程序的工作。我怎樣才能讓rpm自動安裝這個庫的32位版本?任何想法,將不勝感激...

回答

0

我(終於)找到了一個似乎工作的答案。以下內容添加到您的要求是:標籤在轉規格:

actual-so-name()(64bit), actual-so-name-again, package-name 

所以,作爲一個例子,在我來說,我需要libicu我做了以下(剛摘下的ICU之一。所以,我碰巧文件鏈接到):

Requires: libicui18n.so.36()(64bit), libicuuc.so.36, libicu 

這似乎工作。

有沒有更好的方法?

+1

'36'表示ICU 3.6版本,如果有任何方法來對其進行參數化,那可能是值得的。 HTH – 2010-09-16 21:54:11

+2

您可以嘗試完全刪除Require標籤,並讓RPM將特定要求添加到庫中 - – m1tk4 2010-09-19 03:47:29

1

這個問題可能會更好所屬ServerFault,但我相信,隨着RPM 4.6.0中,你可以做這樣的事情:

Requires: libicu%{_isa} 
%if %{__isa_bits} == 64 
Requires: libicu(%{__isa_name}-32) 
%endif 

[見http://www.rpm.org/wiki/PackagerDocs/ArchDependencies]

然而,不幸的是,我目前正在使用的服務器運行RPM 4.4.2.3,所以我不得不使用你的解決方案......並感謝,順便說一句。 :-)

+0

謝謝,像這樣的東西好多了......不幸的是,我的目標是Centos 5(仍...)。不過謝謝。 – maxpenguin 2011-05-05 05:12:18