製做RPM包,能夠方便往後的維護。統一了標準html
yum install rpmdevtools
安裝後,使用 rpmdev-setuptree命令建立rpm包的目錄結構。默認是在$HOME下rmpbuild下,也能夠經過~/.rpmmacros配置。shell
新建一個 .spec 文件 如今,您須要在 ~/rpmbuild/SPECS 目錄下,新建一個 SPEC 文件。文件應命名爲 "軟件包名.spec"。名稱根據軟件包名或通用名填寫便可。可是,必需要遵照 軟件包命名規定。 模板和實例 模板 若是您首次建立 .spec 文件,vim 或 emacs 會自動生成模板: $ cd ~/rpmbuild/SPECS $ vim program.spec 示例(僅供參考): Name: Version: Release: 1%{?dist} Summary: Group: License: URL: Source0: BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: Requires: %description %prep %setup -q %build %configure make %{?_smp_mflags} %install rm -rf %{buildroot} make install DESTDIR=%{buildroot} %clean rm -rf %{buildroot} %files %defattr(-,root,root,-) %doc %changelog
"#
" 字符表示註釋,但須要避免註釋宏(以 %
開頭),由於它們會首先被替換展開。使用 %%
註釋宏。另外,還要避免在腳本命令的相同行中使用行內註釋。vim
如下介紹了主要的標籤。注意 %{name}
,%{version}
和 %{release}
表明 Name, Version 和 Release 這三個標籤。只要更改標籤,宏就會使用新值。segmentfault
yy.mm[dd]
(例如 2008-05-01
可變爲 8.05
) 格式做爲版本號。1%{?dist}
。每次製做新包時,請遞增該數字。當上遊發佈新版本時,請修改 Version 標籤並重置 Release 的數字爲 1
。具體參考打包規定中的 Release 標籤部分,以及 Dist tag。less /usr/share/doc/rpm-*/GROUPS
" 查看完整的組列表。任何包含文檔的子軟件包,使用 "Documentation" 組(如 kernel-doc
)。注意 Fedora 17+ 後已廢除此標籤。Spec 文件參考手冊 有介紹GPLv2+
")而且描述明確(如, "GPLv2+
" 表示 GPL 2 及後續版本,而不是 "GPL
" 或 "GPLv2
" 這種不許確的寫法)。參考 Licensing 和 Licensing Guidelines。若是一個軟件採用多個協議,可使用 "and
" 和 "or
"(例如 "GPLv2 and BSD
")來描述。Source
" 與 "Source0
" 相同。強烈建議提供完整 URL 地址,文件名用於查找 SOURCES
目錄。若是可能,建議使用 %{name}
和 %{version}
替換 URL 中的名稱/版本,這樣更新時就會自動對應。下載源碼包時,須要 保留時間戳。若是有多個源碼包,請用Source1
,Source2
等依次列出。若是你須要添加額外文件,請將它們列在後面。更多特殊案例(如 revision control),請參考 Source URL。~/rpmbuild/SOURCES
目錄下。一個 Patch 應該只作一種修改,因此可能會包含多個 patch 文件。BuildArch: noarch
"。RPM 架構會變成 "noarch
"。%{_topdir}/BUILDROOT/
"。gcc
。若是有必要,你能夠指定須要的最低版本(例:"ocaml >= 3.08
")。若是你須要找到包含 /EGGS
文件的軟件包,可執行 "rpm -qf /EGGS
"。若是你須要找到包含 EGGS
程序的軟件包,可執行 "rpm -qf `which EGGS`
"。請保持最小依賴(例如,若是你不須要 perl 的功能,可以使用 sed
代替),但請注意,若是不包含相關依賴,某些程序會禁用一些功能;此時,你須要添加這些依賴。
auto-buildrequires
軟件包可能會有幫助。rpmbuild
會自動探測依賴,因此可能不須要 Requires 標籤。然而,你也能夠明確標明須要哪些軟件包,或因爲未自動探測所需依賴而須要手動標明。%autosetup
";若是源碼包須要解壓並切換至 NAME
目錄,則輸入 "%autosetup -n NAME
"。查看 %prep 部分了解更多信息。%{_builddir}
目錄安裝至 %{buildroot}
目錄。查看 %install 部分了解更多信息。make test
" 或 "make check
" 命令。此階段要與 %build 分開,以便在須要時忽略測試。rm -rf %{buildroot}
把一個名爲devrpm-0.0.1.tar.gz
的源碼壓縮文件放到rpmbuild
根目錄下的SOURCES目錄下(注,確保此歸檔文件解壓後的目錄爲devrpm-0.0.1,不然會有問題)。架構
到此一個完整的rpm打包環境已經構建完成,下面咱們就能夠開始構建二進制和源代碼RPM包。app
構建RPM包是有命令rpmbuild在SPEC的指導下完成。less
開始構建操做,首先進入到當前用戶的rpmbuild根目錄(即上面提到的目錄環境)。ide
#cd ~/rpmbuild/
執行如何命令,-ba表示build all,即生成包括二進制包和源代碼包的全部RPM包,下來若是正常的話,rpmbuild將正常退出,同時在RPMS目錄和SRPMS目錄中將生成對應的RPM包。測試
#rpmbuild -ba SPECS/hellorpm.spec
以上參考:https://fedoraproject.org/wiki/How_to_create_an_RPM_package/zh-cn#.E6.A8.A1.E6.9D.BF.E5.92.8C.E5.AE.9E.E4.BE.8B字體
http://segmentfault.com/a/1190000002539129