2012-01-09 57 views
2

我有這種構建過程,可以爲一組linux分發創建rpms。如何使用源代替tarball構建rpm

這個創作花費了很多時間,爲此我正在優化它。我學習了rpmbuild,並意識到rpmbuild需要一個tar包並將其解壓以開始構建過程。

有一種方法可以避免使用tarball?因爲我已經與源開始的過程,然後我壓縮它的壓縮包,自的rpmbuild工作在源這似乎沒用,不壓縮檔

回答

5

三種基本方式去了解這一點:

  1. 使用--short-circuit切換到rpmbuild直接跳到構建步驟。
  2. 在你的源代碼在規範文件中的SourceXX:每一個文件列表,並將其放置在rpmbuild/SOURCES/目錄
  3. 包裹%setup宏觀與一些情報所有這些文件

選項1,您可以暫時解決其每次提取tarball,這是開發的理想選擇。選項2繞過了開始使用tarball的概念,但是當您擁有大量文件時會變得非常麻煩。選項3是在發生包的常規構建時發生的,它是一個很大的源文件,比如linux內核。 EL6內核.spec文件執行以下操作:

if [ ! -d kernel-%{kversion}/vanilla-%{kversion}/ ]; then 
    %setup -q -n kernel-%{kversion} -c 
    mv linux-2.6.32 vanilla-%{kversion}; 
else 
    cd kernel-%{kversion}/; 
fi 

cp -rl vanilla-%{kversion} linux-%{KVERREL} 

cd linux-%{KVERREL} 

基本上,提取內核源並將其命名爲其他內容。在下一次構建時,檢查一下。如果它在那裏,請不要提取源代碼,只需複製一份。