RPM安装包-Spec文件參数具体解释与演示样例分析
spec文件是整個(gè)RPM包建立過程的中心,它的作用就如同編譯程序時(shí)的Makefile文件。
?
1.Spec文件參數(shù)
spec文件包括建立一個(gè)RPM包必需的信息,包括哪些文件是包的一部分以及它們安裝在哪個(gè)文件夾下。這個(gè)文件一般分為例如以下的幾節(jié):
(1) Preamle(序言)
序言包括用戶請求包的信息時(shí)所顯示的內(nèi)容。它能夠包括包的功能描寫敘述、包的軟件版本號(hào)、版權(quán)信息和所屬的包組等。Summary 是一行關(guān)于該軟件包的描寫敘述,Name 是該軟件包的基名,Version 是該軟件的版本號(hào)號(hào),Release 是 RPM 本身的版本號(hào)號(hào),假設(shè)修復(fù)了 spec 文件里的一個(gè)錯(cuò)誤并公布了該軟件同一版本號(hào)的新 RPM,就應(yīng)該添加發(fā)行版號(hào)。License 應(yīng)該給出一些許可術(shù)語(如:"GPL"、"Commercial"、"Shareware"),Group 標(biāo)識(shí)軟件類型。那些試圖幫助人們管理 RPM 的程序通常依照組列出 RPM。您能夠在usr/share/doc/rpm-4.0.4/GROUPS 文件看到一個(gè) Red Hat 使用的組列表(如果您安裝的 RPM 版本號(hào)是 4.0.4)??墒悄€能夠使用那些組名以外的名稱。Source0、Source1等等給這些源文件命名(通常為 tar.gz 文件)。%{name} 和 %{version} 是 RPM 宏,它們擴(kuò)展成為頭中定義的 rpm 名稱和版本號(hào)。
要注意的是,你不要在 Source 語句中包括不論什么路徑。缺省情況下,RPM 會(huì)在 /usr/src/redhat/SOURCES 中尋找文件,請將您的源文件復(fù)制或鏈接到那里。(要使 spec 文件盡量可移植的話,應(yīng)當(dāng)盡量避免嵌入自己開發(fā)機(jī)器上的假想路徑。其它開發(fā)者就能夠指示 RPM 在別的文件夾下查找源文件,而不用改動(dòng)您的 spec 文件。)
接下來的部分從 %description 行開始。您應(yīng)該在這里提供該軟件很多其它的描寫敘述,這樣不論什么人使用 rpm -qi 查詢您的軟件包時(shí)都能夠看到它。您能夠解釋這個(gè)軟件包做什么,描寫敘述不論什么警告或附加的配置指令,等等。
(2) Prep節(jié)
Prep 節(jié)進(jìn)行實(shí)際的打包準(zhǔn)備工作,它是使用節(jié)前綴%prep表示的。一般而言,這一節(jié)的主要工作是檢查標(biāo)簽語法是否正確,刪除舊的軟件源程序,對(duì)包括源程序的 tar文件進(jìn)行解碼。假設(shè)包括補(bǔ)丁(patch)文件,將補(bǔ)丁文件應(yīng)用到解開的源代碼中。它一般包括%setup與%patch兩個(gè)命令。%setup用于將軟件源代碼包解開,運(yùn)行%patch可將補(bǔ)丁文件增加解開的源程序中。
%setup
-n newdir---------將壓縮的軟件源程序在newdir文件夾下解開。
-c ---------------在解開源程序之前先創(chuàng)建文件夾。
-b num------------在包括多個(gè)源程序時(shí),將第num個(gè)源程序解壓縮。
-T----------------不使用缺省的解壓縮操作。
比如:
%setup -T -b 0
/*解開第一個(gè)源程序文件。*/
%setup -c -n newdir
/*創(chuàng)建文件夾newdir,并在此文件夾之下解開源程序。*/
%patch
%patchN-------這里N是數(shù)字,表示使用第N個(gè)補(bǔ)丁文件,等價(jià)于%patch -P N
-p0-----------指定使用第一個(gè)補(bǔ)丁文件,-p1指定使用第二個(gè)補(bǔ)丁文件。 -s------------在使用補(bǔ)丁時(shí),不顯示不論什么信息。
-b name-------在增加補(bǔ)丁文件之前,將源文件名稱上增加name。若為指定此參數(shù),則缺省源文件增加.orig。
-T------------將全部打補(bǔ)丁時(shí)產(chǎn)生的輸出文件刪除。
(3) Build節(jié)
這一節(jié)主要用于編譯源代碼,它是使用節(jié)前綴%build表示的。這一節(jié)一般由多個(gè)make命令組成。
(4) Install節(jié)
這一節(jié)主要用于完畢實(shí)際安裝軟件必須運(yùn)行的命令,它是使用節(jié)前綴%install表示的。這一節(jié)通常是由make install指令構(gòu)成,可是有時(shí)也會(huì)包括cp、mv、install等指令。
這一節(jié)還能指定在用戶安裝的系統(tǒng)上,包安裝時(shí)執(zhí)行的腳本。這種腳本稱為安裝(卸載)腳本。它能夠指定包安裝前、包安裝后、包除去前、包除去后的系統(tǒng)必須執(zhí)行的外殼程序段。在用戶安裝的系統(tǒng)上,為了驗(yàn)證一個(gè)包是否已經(jīng)安裝成功的驗(yàn)證腳本也可由這一節(jié)指定。
(5) Clean節(jié)
這一節(jié)所描寫敘述的內(nèi)容表示在完畢包建立的工作之后,自己主動(dòng)運(yùn)行此節(jié)下的腳本進(jìn)行附加的清除工作,它是使用節(jié)前綴%clean表示的。一般而言,這一節(jié)的內(nèi)容是簡單地使用rm -rf $RPM_BUILD_ROOT命令,不須要指定此節(jié)的其他內(nèi)容。
(6) 文件列表
這一節(jié)指定構(gòu)成包的文件的列表,它是使用節(jié)前綴%files表示的。此外,它還包括一系列宏控制安裝后的文件屬性和配置信息。
%files 列出應(yīng)該捆綁到 RPM 中的文件,并可以可選地設(shè)置許可權(quán)和其他信息。在 %files 中,您可以使用 %defattr 來定義缺省的許可權(quán)、全部者和組;%defattr(-,root,root) 會(huì)安裝 root 用戶擁有的全部文件,使用當(dāng) RPM 從構(gòu)建系統(tǒng)捆綁它們時(shí)它們所具有的不論什么許可權(quán)。
能夠用 %attr(permissions,user,group) 覆蓋個(gè)別文件的全部者和許可權(quán)。能夠在 %files 中用一行包含多個(gè)文件。能夠通過在行中加入 %doc 或 %config 來標(biāo)記文件。%doc 告訴 RPM 這是一個(gè)文檔文件,因此假設(shè)用戶安裝軟件包時(shí)使用 --excludedocs,將不安裝該文件。您也能夠在 %doc 下不帶路徑列出文件名稱,RPM 會(huì)在構(gòu)建文件夾下查找這些文件并在 RPM 文件里包含它們,并把它們安裝到 /usr/share/doc/%{name}-%{version}。以 %doc 的形式包含 README 和 ChangeLog 這種文件是個(gè)好主意。
%config 告訴 RPM 這是一個(gè)配置文件。在升級(jí)時(shí),RPM 將會(huì)試圖避免用 RPM 打包的缺省配置文件覆蓋用戶細(xì)致改動(dòng)過的配置。
注意:假設(shè)在 %files 下列出一個(gè)文件夾名,RPM 會(huì)包含該文件夾下的全部文件。通常這不是您想要的,特別對(duì)于 /bin 這種文件夾。
(7) 修改日志
這一節(jié)主要描寫敘述軟件的開發(fā)記錄,它是使用節(jié)前綴%changlog表示的。這個(gè)段的內(nèi)容是為了開發(fā)者能具體的了解該軟件的開發(fā)過程,對(duì)于包的維護(hù)極有優(yōu)點(diǎn)。
?
2.Spec文件演示樣例與解說
Name: ao_redpacket(CPM名稱) Version: 1(CPM版本號(hào)) Release: 5(RPM 本身的版本號(hào)號(hào)) License: Commercial(授權(quán)) Group: commodity(軟件類型) Summary: the main AO module of commodity on basic platform(描寫敘述) Vendor: Tencent(公司) Packager: timmyye(公布人) Prefix: /usr/local(前綴路徑) Provides: ao_redpacket(提供) Requires: platform.framework public_scripts(需求) Buildroot: /data/htdocs/rpm.paipaioa.com/rpm/data_32/rpm_build/commodity/ao_redpacket_1/build_directory(編譯路徑)%description(描寫敘述) the main AO module of commodity on basic platform%files(安裝后的文件屬性和配置信息) %defattr (-,appadmin,users)(缺省的許可權(quán)、全部者和組) %config /usr/local/c2csvc/svc/ao_redpacket/etc/* %dir /usr/local/c2csvc/svc/ao_redpacket %dir /usr/local/c2csvc/svc/ao_redpacket/etc /usr/local/c2csvc/svc/ao_redpacket/bin /usr/local/c2csvc/svc/ao_redpacket/no_itil /usr/local/c2csvc/svc/ao_redpacket/so /usr/local/c2csvc/so/ao_redpacket.so /data/applog/ao_redpacket /usr/local/c2csvc/svc/ao_redpacket/restart_itilid%pre
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/mfrbuaa/p/4175219.html
總結(jié)
以上是生活随笔為你收集整理的RPM安装包-Spec文件參数具体解释与演示样例分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java Script基础(九) 下拉列
- 下一篇: 空气质量相关性分析