一、安裝 rpmbuild
// for fedora linux
yum install rpmbuild -y
// for ubuntu
apt-get install rpmbuild
二、rpm specification file
spec檔案規格
能熟練掌握以上命令以及部分參數含義,管理日常的rpm軟體包就不成問題了。然而隨著Linux風靡全球,越來越多的開發人員喜歡採用RPM格式來發布自己的軟體包。那麼RPM軟體包是怎樣製作的呢?對大多數Linux開發工程師來說是比較陌生的。
其實,製作RPM軟體包並不是一件複雜的工作,其中的關鍵在於編寫SPEC軟體包描述檔案。要想製作一個rpm軟體包就必須寫一個軟體包描述檔案 (SPEC)。這個檔案中包含了軟體包的諸多資訊,如軟體包的名字、版本、類別、說明摘要、建立時要執行什麼指令、安裝時要執行什麼操作、以及軟體包所要 包含的檔案清單等等。
描述檔案說明如下:
(1) 檔案頭
一般的spec檔案頭包含以下幾個域:
Summary:
用一句話概括該軟體包盡量多的資訊。
Name:
軟體包的名字,最終RPM軟體包是用該名字與版本號碼,釋出號及體系號來命名軟體包的。
Version:
軟體版本號碼。僅當軟體包比以前有較大改變時才增加版本號碼。
Release:
軟體包釋出號。一般我們對該軟體包做了一些小的補丁的時候就應該把釋出號加1。
Vendor:
軟體開發人員的名字。
Copyright:
軟體包所採用的著作權規則。具體有:GPL(自由軟體),BSD,MIT,Public Domain(公用域),Distributable(貢獻),commercial(商業),Share(共用)等,一般的開發都寫GPL。
Group:
軟體包所屬類別,具體類別有:
Amusements/Games (娛樂/遊戲)
Amusements/Graphics(娛樂/圖形)
Applications/Archiving (應用/文檔)
Applications/Communications(應用/通訊)
Applications/Databases (應用/資料庫)
Applications/Editors (應用/編輯器)
Applications/Emulators (應用/模擬器)
Applications/Engineering (應用/工程)
Applications/File (應用/檔案)
Applications/Internet (應用/網際網路)
Applications/Multimedia(應用/多媒體)
Applications/Productivity (應用/產品)
Applications/Publishing(應用/印刷)
Applications/System(應用/系統)
Applications/Text (應用/文本)
Development/Debuggers (開發/調試器)
Development/Languages (開發/語言)
Development/Libraries (開發/函數庫)
Development/System (開發/系統)
Development/Tools (開發/工具)
Documentation (文檔)
System Environment/Base(系統內容/基礎)
System Environment/Daemons (系統內容/守護)
System Environment/Kernel (系統內容/核心)
System Environment/Libraries (系統內容/函數庫)
System Environment/Shells (系統內容/介面)
User Interface/Desktops(使用者介面/案頭)
User Interface/X (使用者介面/X視窗)
User Interface/X Hardware Support (使用者介面/X硬體支援)
Source:
來源程式軟體包的名字。如 stardict-2.0.tar.gz。
%description:
軟體包詳細說明,可寫在多個行上。
(2)%prep段
這個段是預先處理段,通常用來執行一些解開來源程式包的命令,為下一步的編譯安裝作準備。%prep和下面的%build,%install段一樣,除 了可以執行RPM所定義的宏命令(以%開頭)以外,還可以執行SHELL命令,命令可以有很多行,如我們常寫的tar解包命令。
(3)build段
本段是建立段,所要執行的命令為產生軟體包服務,如make 命令。
(4)%install段
本段是安裝段,其中的命令在安裝軟體包時將執行,如make install命令。
(5)%files段
本段是檔案段,用於定義軟體包所包含的檔案,分為三類--說明文檔(doc),設定檔(config)及執行程式,還可定義檔案存取許可權,擁有者及組別。
(6)%changelog段
本段是修改日誌段。你可以將軟體的每次修改記錄到這裡,儲存到發布的軟體包中,以便查詢之用。每一個修改日誌都有這樣一種格式:第一行是:* 星期 月 日 年 修改人 電子信箱。其中:星期、月份均用英文形式的前3個字母,用中文會報錯。接下來的行寫的是修改了什麼地方,可寫多行。一般以減號開始,便於後續的查閱。
三、原始碼打包
將原始碼打包,如 stardict-2.0.tar.gz,並將檔案放到spec檔案Source段所描述的路徑下,通常為/usr/src/redhat/SOURCES/目錄下(不同的Linux發布版本略有不同,如OpenSUSE為 /usr/src/packages/SOURCES/)
四、rpm打包
rpmbuild -ba ‘spec檔案路徑’
(rpmbuild常用參數: -bb 只編譯二進位rpm包 -bs 只編譯源碼rpm包 -ba 同時編譯二進位和源碼rpm包)
build完後,可以在/usr/src/redhat/RPMS/下找到二進位rpm包,rpm包按照其對應的cpu體繫結構分類,通常在/usr/src/redhat/RPMS/i386目錄下
/usr/src/redhat/SRPMS/下找到源碼rpm包,此時由於是原始碼,所以無須按體繫結構分類。
參考文獻:
http://www.uplinux.com/www/dev/02/317.shtml