%prep 預處理腳本
- 預處理腳本,這個段是預處理段,通常用來執行一些
解開源程序包
的命令,爲下一步的編譯安裝作準備。 - %prep和下面的%build,%install段一樣,可以執行
RPM所定義的宏命令
(以%開頭) - 還可以執行
SHELL命令
,命令可以有很多行,如我們常寫的tar解包命令。
%setup
- 宏解壓源代碼
- /usr/bin/gzip -dc xxxx.tgz # 把源碼包解壓並放好
- /usr/bin/tar -xf -
- 通常是從/usr/src/asianux/SOURCES裏的包解壓到/usr/src/asianux/BUILD/%{name}-%{version}中
2. 參數
- %setup 不加任何選項,僅將軟件包打開
-q
:q 參數給 %setup 宏。這會顯著減少編譯日誌文件的輸出,尤其是源代碼包會解壓出一堆文件的時候, 在安靜模式下且最少輸出-c
:%setup -c 解壓縮之前先產生目錄-n
:同時編譯多個源碼包,源碼的tar包的名稱與解壓出來的目錄不一致,此時,就需要使用-n參數指定一下例如:%setup -n newdir 將軟件包解壓到newdir目錄-D
:#在解壓之前禁止刪除目錄-T
:不使用default的解壓縮操作。-b
:%setup -b num 將第num個source文件解壓縮- %setup -q -n %{name}-%{version}:靜默模式下 指定解壓到新目錄,名爲%{name}-%{version}
%build 開始構建包
- 在/usr/src/asianux/BUILD/%{name}-%{version}目錄中進行
mark
的工作 - 定義編譯軟件包所要執行的命令, 這一節一般由多個make命令組成。
- 這些命令可以是 shell 命令,也可以是宏。
- 開始編譯源碼構建包,相當於configure以及make部分
%install 開始把軟件安裝到虛擬的根目錄中
- /usr/src/asianux/BUILD/%{name}-%{version}目錄中進行
make install
的操作,路徑不對的話,則下面%file中尋找文件的時候就會失敗 - 常見內容
- %makeinstall:make DESTDIR=$RPM_BUILD_ROOT install
- %install主要就是爲了後面的%file服務的
%post rpm安裝後執行的腳本
%preun rpm卸載前執行的腳本
%postun rpm卸載後執行的腳本
%preun %postun 的區別是什麼呢?
前者在升級的時候會執行,後者在升級rpm包的時候不會執行