rpmbuild製作rpm安裝包

2021-05-21 17:46:37 字數 3418 閱讀 6153

寫在前面:

用源**製作rpm包的方法:

1. 源**打包

將源**打包,如 stardict-2.0.tar.gz,並將檔案放到spec檔案source段所描述的路徑下,通常為/usr/src/redhat /sources/目錄下(不同的linux發布版本略有不同,如opensuse為 /usr/src/packages/sources/)

2. 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包,此時由於是源**,所以無須按體系結構分類。

可能遇到的問題:

rpmbuild命令執行後

報錯rpm build errors: installed (but unpackaged) files found:...

網上有人提到將報錯的檔案新增到spec檔案的%file段中,實驗時沒有成功。

另一種叫簡單的方法是:

在/usr/lib/rpm/macros檔案中,將%_unpackaged_files_terminate_build 1 的值改為0

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

軟體開發者的名字。

軟體包所採用的版權規則。具體有:gpl(自由軟體),bsd,mit,public domain(公共域),distributable(貢獻),commercial(商業),share(共享)等,一般的開發都寫gpl。

group:

軟體包所屬類別,具體類別有:

amusements/games (娛樂/遊戲)

amusements/graphics(娛樂/圖形)

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 inte***ce/desktops(使用者介面/桌面)

user inte***ce/x (使用者介面/x視窗)

user inte***ce/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包,此時由於是源**,所以無須按體系結構分類。

rpmbuild製作rpm安裝包

寫在前面 用源 製作rpm包的方法 1.源 打包 將源 打包,如 stardict 2.0.tar.gz,並將檔案放到spec檔案source段所描述的路徑下,通常為 usr src redhat sources 目錄下 不同的linux發布版本略有不同,如opensuse為 usr src pac...

rpmbuild 製作 rpm 安裝包 (一)

sudo yum install y rpm build rpmdevtools rpmdev setuptree 假設當前使用者名為 rpmtt 該命令將會在使用者目錄下建立如下資料夾 rpmbuild build buildroot rpms sources specs srpms資料夾 預設路...

使用rpm build製作rpm包

本實驗使用rpm build將nginx原始碼包製作成rpm包 nginx版本 nginx 1.16.1 1 1.安裝rpm build軟體 yum y install rpm build 2.生成rpmbuild目錄結構 rpmbuild ba mmm 提示沒有檔案或目錄,此時會在當前目錄下生成乙...