2013-01-25 88 views

回答

4

%define宏總是被重新評估,頂在規範文件底部,所以你不能有循環。

%global宏是一次性的。

例如,another question concerning 'requires' processing

%global _use_internal_dependency_generator 0 
%global __find_requires_orig %{__find_requires} 
%define __find_requires %{_builddir}/%{?buildsubdir}/build/find-requires %{__find_requires_orig} 

如果我用了%define聲明__find_requires_orig,它會出錯誤了宏循環。

如果這不能回答你的問題,請詳細說明你正在尋找什麼信息,或者你的最終目標。


ETA:

%pre%post部分將已經從當RPM內置硬編碼的宏。如果您需要做出額外的運行時決策,則需要在這些shell腳本中完成。

+0

啊我明白了,所以有可能給任何變量賦值並在另一個變量中使用它。例如。我在%pre標記中做了一些驗證,然後創建一個變量,然後在%install標記中使用它的新值。 –

+0

不,你不能用RPM變量來做到這點,除非你的意思是'%prep'部分。 '%pre'在* target *機器上執行,其中'%install'在構建RPM時使用。 –

+0

對不起,我的壞....那麼%pre和%post –