2010-04-02 40 views
2

的rpmbuild該目錄下生成RPM?的rpmbuild生成RPM在子目錄

我查了RPMS目錄: -

[[email protected] adil]# ls /usr/src/redhat/ 
BUILD RPMS SOURCES SPECS SRPMS 
[[email protected] adil]# ls /usr/src/redhat/RPMS/ 
athlon i386 i486 i586 i686 noarch 
[[email protected] adil]# 

如何決定的rpmbuild輸出在上述子目錄? 它是由spec文件控制的嗎?什麼是默認選項?

我想uname -p,但它不是可能的uname -i情況下使用。
鏈接到我的最後一個問題Difference between "machine hardware" and "hardware platform"

回答

4

二進制包根據%_build_name_fmt宏命名。默認情況下,該宏在開始時包含%{ARCH}/,所以這是二進制包的放置位置。

+0

謝謝。這個ARCH值如何確定?我對此感興趣。 – Adil 2010-04-03 16:25:05

+0

包的拱形由在'rpmbuild'的'--target'參數之後傳遞的值(例如'--target noarch')決定。 – 2010-04-03 16:47:57

+0

謝謝。這對了解當前的格式非常有用:'rpm --showrc | grep「:_build_name_fmt」'。此外,讀者可能有興趣知道,他們可以通過這個作爲參數的rpmbuild像這樣的例子,在那裏我已經刪除架構的目錄:'的rpmbuild --define「_build_name_fmt %% {NAME} - %% {VERSION} - % %{RELEASE}。%% {ARCH} .rpm「...' – 2014-05-29 13:12:39

0

RPM轉到RPMS文件夾和源RPM到SRPMS。這不是由spec文件控制的 - 這是慣例。你究竟想要做什麼?

+0

謝謝,我知道。如上所示,我的RPMS目錄有6個子目錄:athlon i386 i486 i586 i686 noarch 所以如果我建立一個RPM,默認它會在哪個子目錄下生成? – Adil 2010-04-02 07:32:38

2

從你最後的評論繼,默認情況下,RPM會進入你正在構建的平臺相匹配的子目錄。您可以通過將--target參數傳遞給rpmbuild來覆蓋它,但這僅適用於有效的情況;例如,您可以在x86_64系統上使用--target i386來構建32位RPM,但無法在32位平臺上構建64位RPM。

+0

謝謝,如果我不指定它會根據哪個目錄? 'UNAME -a'使輸出的 「Linux湯姆2.6.9-89.ELsmp#1 SMP週一4月20日10時34分33秒EDT 2009年的i686 i686的的i386 GNU/Linux的」 – Adil 2010-04-03 16:26:42

+0

這將進入無論是i686的或I386。 – 2010-04-04 01:38:09