rpmbuild 製作 rpm 安裝包 (一)

2021-10-06 19:49:01 字數 1912 閱讀 3459

sudo yum install -y rpm-build rpmdevtools

rpmdev-setuptree (假設當前使用者名為 rpmtt)

該命令將會在使用者目錄下建立如下資料夾

rpmbuild/

|--- build

|--- buildroot

|--- rpms

|--- sources

|--- specs

|--- srpms

資料夾

預設路徑

路徑巨集定義

說明build

~/rpmbuild/build

%_builddir

原始碼解壓並編譯的臨時目錄

buildroot

~/rpmbuild/buildroot

%_buildrootdir

編譯安裝(%install)階段的臨時目錄

rpms

~/rpmbuild/rpms

%_rpmdir

最終生成二進位制 rpm 安裝包

sources

~/rpmbuild/sources

%_sourcedir

所有原始碼包(.tar.gz)及需要的補丁檔案

specs

~/rpmbuild/specs

%_specdir

*** 配置檔案 ***

srpms

~/rpmbuild/srpms

%_srcrpmdir

最終生成的原始碼rpm包

1)%prep

讀取 %_sourcesdir 目錄下的源**及補丁,將源**解壓到 %_builddir 並進行打補丁操作

2)%build

對 %_builddir 目錄下的檔案進行編譯

3)%install

安裝目錄到 %_buildroot 目錄下

1)rpmbuild -bp ***.spec   執行到 %prep 階段

2)rpmbuild -bc ***.spec  執行到 %build 階段

3)rpmbuild -bi ***.spec   執行到 %install 階段

4)rpmbuild -bl ***.spec

5)rpmbuild -bs ***.spec   僅僅生成 src 的 rpm 包

6)  rpmbuild -bb ***.spec   僅僅生成 二進位制 的 rpm 包

7)rpmbuild -ba ***.spec   生成 src 和 二進位制 rpm 包

標籤 name (巨集 %) : 軟體包名,與spec的檔名保持相同。

標籤 version(巨集 %): 版本號

標籤 release (巨集%): 發行編號,初始值為1%,後期製作新版本時,遞增該值。若version發布新版本,                       該值重新設定為1。

標籤 summary : 軟體包介紹(簡潔)。

標籤 group : 軟體包組。

標籤 license :軟體授權協議。

標籤 sources0 :原始碼包名稱,若有多個原始碼包,增加標籤sources1、sources2...

標籤patch0 : 補丁檔案

%description : 詳細描述

%prep、%build、%install (詳見 《4、rpmbuild指令執行的重要階段》)

%clean :清理安裝目錄

%files :列出所有需要安裝的檔案和目錄

%defattr:設定檔案許可權(在%files開頭設定),格式為:%defattr(《檔案許可權》, 《使用者》, 《使用者組》, 《目錄許可權》)

7、其他參考教程

how to create an rpm package 

rpmbuild 中文手冊

rpmbuild製作rpm安裝包

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

rpmbuild製作rpm安裝包

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

使用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 提示沒有檔案或目錄,此時會在當前目錄下生成乙...