技術收藏之linux RPM 打包流程

2021-10-10 05:23:55 字數 3206 閱讀 7360

1.因為打rpm包需要 rpmbuild 命令,所以需要先安裝 rpmbuild 相應工具,安裝過程可在網上查詢;

2.輸入命令 rpmbuild xx.spec 即可在自動當前使用者的 $home 目錄下建立 rpm 相關的資料夾,也可手動建立;

複製**

1

[xx@localhost ~

]$ rpmbuild xx.spec

2 錯誤:stat ~

/xx.spec 失敗:沒有那個檔案或目錄

3[xx@localhost ~

]$ tree ~

/rpmbuild/

4 rpmbuild/

5 ├── build

6 ├── buildroot

7 ├── rpms

8 ├── sources

9 ├── specs

10 └── srpms

build:原始碼包被解壓至此,並在該目錄的子目錄完成編譯,巨集為 %_builddir

buildroot:儲存 %install 階段安裝的檔案,巨集為 %_buildrootdir

rpms:生成/儲存二進位制 rpm 包,巨集為 %_rpmdir

sources:儲存原始碼包(如 .tar 包)和所有 patch 補丁,巨集為 %_sourcedir

specs:儲存 rpm 包配置(.spec)檔案,巨集為 %_specdir

srpms:生成/儲存原始碼 rpm 包(srpm),巨集為 %_srcrpmdir

~/rpmbuild 的巨集為 %_topdir

1.建立 spec 檔案如下所示:

[***@localhost rpmbuild]$ rpmdev-newspec ***.spec

***.spec created; type minimal, rpm version >=

4.12

.

name:    #軟體名稱

version:  #版本號

release:  #發布編碼

summary:  #簡要說明

license:  #協議版本

url:

source0:  #原始碼包

%description

#描述%prep

#預處理

%build

#編譯%pre

#安裝前

%install

#安裝%post

#安裝後

%files

#安裝的檔案列表

%clean

#清理臨時檔案

%preun

#解除安裝前

%postun

#解除安裝後

%changelog

* fri aug 7

2020

3.安裝的各個階段說明:

%prep階段 - 預處理,主要對源**包進行解壓和打補丁

一般使用 %setup -c 或者 %setup -q 命令來解壓原始碼包,直接會將檔案解壓到%

%build階段 - 對源**包進行編譯

編譯階段,非 gnu configure 配置的程式可以不關注這個階段

%install階段 - 將軟體安裝到虛擬根目錄, 同時 install 階段也有如下階段

%pre階段 - 安裝前

$1 == 1 代表安裝

$1 == 2 代表公升級

%post階段 - 安裝後

$1 == 1 代表安裝

$1 == 2 代表公升級

%preun階段 - 解除安裝前

$1 == 0 代表解除安裝

$1 == 1 代表公升級

%postun階段 - 解除安裝後

$1 == 0 代表解除安裝

$1 == 1 代表公升級

rm -rf $rpm_build_root

cp -rf *** $rpm_build_root

%files階段-列出被打包的檔案和目錄

首先要設定預設許可權,同時要列出打包的目錄和檔案,設定預設許可權的命令如下:

%defattr(《檔案許可權》, 《使用者》, 《使用者組》, 《目錄許可權》)

第 4 個引數通常會省略。常規用法為 %defattr(-,root,root,-),其中 「-」 表示預設許可權。

在列出檔案的目錄時,盡量使用內建巨集來代替目錄名,常用的內建巨集如下所示:

%

/etc

%/usr%%

%%/bin

% lib (lib64 on 64bit systems)%%

/%%%

/libexec%%

/sbin

%/var/lib%%

/share%%

/include

%/usr/include

%/usr/share/info

%/usr/share/man

%/var%%

/rc.d/init.d %%

/rpmbuild%%

/build%%

/rpms%%

/sources%%

/specs%%

/srpms%%

/buildroot

%/var%%

/tmp

%/usr%%

/src%%

/doc%%

/%-%

-%.%

$rpm_build_root %

%clean階段 - 完成後的一些清理工作

主要是清理 %和%兩個目錄裡的中間檔案

%changelog階段 – 主要記錄每次打包時的修改日誌

%changelog

在 spec 目錄下執行 rpmbuild -xx ***.spec 命令完成打包,rpmbuild 命令選項如下所示:

#rpmbuild

-bp 預處理

-bc 編譯

-bi 編譯並安裝

-bl 檢驗檔案是否齊全

-ba 編譯後做成*

.rpm和src.rpm

-bb 編譯後做成*

.rpm

-bs 只做成*

.src.rpm

技術收藏之Linux gcc編譯引數

警告 warning 庫依賴編譯優化 編譯加速 gcc常用選項 傳載自 第一步是進行預編譯,使用 e引數可以讓gcc在預處理結束後停止編譯過程。比如 gcc e hello.c o hello.i預處理的巨集定義插入到hello.i中。第二步是將hello.i編譯為目標 這可以通過使用 c引數來完成...

後台技術收藏

1.後台的一般架構 2.qq為啥用udp 實際是udp,tcp,http,p2p都用了。3.後台技術架構選型 用文字編輯器開啟,搜尋 xampp root bin mysql.server start dev null 在那一行前面新增 unset dyld library path 儲存退出,重新...

技術英文縮寫收藏

mux 資料選擇器 英語 multiplexer,簡稱 mux 1 或稱多路復用器,是一種可以從多個模擬或數字輸入訊號中選擇乙個訊號進行輸出的器件。hal 是一層硬體的抽象 hardware abstract layer duty cycle 負載週期 msb most significant by...