Linux rpm 包製作 – 使用 rpmbuild

來源:互聯網
上載者:User

一、安裝 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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.