RPM包製作方法

2021-09-26 03:59:30 字數 4030 閱讀 8718

一、rpm介紹

rpm 前是red hat package manager 的縮寫,本意是red hat 軟體包管理,顧名思義是red hat 貢獻出來的軟體包管理;現在應為rpm package manager的縮寫。在fedora、redhat、mandriva、suse、yellowdog等主流發行版本,以及在這些版本基礎上二次開發出來的發行版採用; rpm包中除了包括程式執行時所需要的檔案,也有其它的檔案;乙個rpm包中的應用程式,有時除了自身所帶的附加檔案保證其正常以外,還需要其它特定版本檔案,這就是軟體包的依賴關係。

rpm可以讓使用者直接以binary方式安裝軟體包,並且可替使用者查詢是否已經安裝了有關的庫檔案;在用rpm刪除程式時,它又會聰明地詢問使用者是否要刪除有關的程式。如果使用rpm來公升級軟體,rpm會保留原先的配置檔案,這樣使用者就不用重新配置新的軟體了。rpm保留乙個資料庫,這個資料庫中包含了所有的軟體包的資料,通過這個資料庫,使用者可以進行軟體包的查詢。rpm雖然是為linux而設計的,但是它已經移值到sunos、solaris、aix、irix等其它unix系統上了。rpm遵循gpl版權協議,使用者可以在符合gpl協議的條件下自由使用及傳播rpm。

二、rpm包分類

rpm分為兩大類,

1

二進位製類包,包括rpm安裝包(一般分為i386和x86等幾種)和調式資訊包等

2 原始碼類包,原始碼包和開發包應該歸位此類

它們之間的關係是,最先我們按rpm打包要求改造軟體專案原始碼,當符合要求之後就可以使用rpmbuild命令來生成不同的rpm包,同時生成的包之間版本是直接對應的,比如相同的原始碼包將生成完全相同的二進位制rpm包。當你在網上查詢rpm包時,一般你可以在rpms目錄中找到預編譯的二進位製包,而原始碼包則會在srpms目錄內。

我們這裡提到的rpm製作就是指改造軟體源**使之符合rpm打包要求的過程,這也可以等價為rpm原始碼包的製作過程,因為當你有了原始碼包就可以直接編譯得到二進位制安裝包和其他任意包。

三、rpm包製作介紹

rpm包的製作,即是rpm原始碼包的製作。

rpm包工作的原理

rpm是為解決原始碼包不易安裝(需要編譯)和軟體包相互之間依賴(是rpm包管理器可以一定程度解決依賴問題)問題,它通過在探測原始碼包在build和install階段的動作獲得最終生成的需要安裝的系統裡的檔案,並記錄下一些必要的操作(比如安裝完成後執行某項操作),然後把此組成為乙個整體,當在使用者安裝此包時把前面獲得的所有問題和記錄的所有操作原原本本的作用的實際系統上。
把乙個普通的原始碼打成rpm包,需要下面一些操作

1

、先需要對專案的makefile作必要的改造以支援rpm打包操作(實際上此操作不是絕對的,spec文件和makefile的是協調統一工作的,只要他們之間配合好了其他都無所謂,我們一般只是推薦大家盡量按行業標準規範操作而已)

2、次是針對當前專案撰寫spec文件,spec文件包括了rpm打包過程的操作內容和新生成的rpm包的基本資訊等,它的作用物件是打包程式rpmbuild。

四、rpm包製作過程參考:1 準備打包環境

執行如下命令安裝rpmbuild和rpmdevtools

#yum

install rpmbuild

yum

install

rpmdevtools

執行如下命令來生成rpmbuild的工作目錄

#rpmdev-setuptree
工作目錄結構如下,

~/rpmbuild

~/rpmbuild/sources #放置打包資源,包括原始碼打包檔案和補丁檔案等

~/rpmbuild/specs #放置spec文件

~/rpmbuild/build #打包過程中的工作目錄

~/rpmbuild/rpms #存放生成的二進位製包

~/rpmbuild/rpms/i386 #存放生成的i386結構包

~/rpmbuild/srpms #存放生成的原始碼包

3、撰寫spec檔案

spec撰寫是打包rpm的核心,也算是最難的一步,好在我們可以從參照乙個簡單的模板檔案開始,在可以實現基本功能的基礎上再一步一步的擴充文件內容,直至完全達到要求。下面是乙個簡單的spec文件,其中包括了一些說明資訊(注:#後面的內容為說明資訊),該spec文件是對乙個測試的軟體專案hellorpm寫的,hellorpm軟體包編譯後僅有乙個執行檔案、乙個手冊檔案和乙個專案說檔案。

nginx.spec文件的內容如下:

#

# example spec

file

fornginx

##軟體包簡要介紹

summary: high performance web server

#軟體包的名字

name: nginx

#軟體包的主版本號

version:

1.2.1

#軟體包的次版本號

release:

1.el5.ngx

#授權協議

license:

2-clause bsd-like license

#軟體分類

#軟體包的內容介紹

#表示預操作字段,後面的命令將在原始碼**build前執行

%prep

rm -rf $rpm_build_dir/nginx-1.2.1

zcat $rpm_source_dir/nginx-1.2.1.tar.gz | tar -xvf -#build欄位,將通過直接呼叫原始碼目錄中自動構建工具完成原始碼編譯操作

%build

cd nginx-1.2.1

#呼叫原始碼目錄中的configure命令

./configure --prefix=/usr/local/nginx

#在原始碼目錄中執行自動構建命令make

make

#安裝字段

%install

cd nginx-1.2.1

#呼叫原始碼中安裝執行指令碼

make

install

%preun

if [ -z "

`ps aux | grep nginx | grep -v grep`

" ];then

killall nginx >/dev/null

exit 0fi

#檔案說明字段,宣告多餘或者缺少都將可能出錯

%files

#宣告/usr/local/nginx將出現在軟體包中

/usr/local/nginx
4、構建rpm包

開始構建操作,首先進入到當前使用者的rpmbuild根目錄

#cd ~/rpmbuild/#rpmbuild -ba specs/nginx.spec

RPM包製作方法

一 rpm介紹 rpm 前是red hat package manager 的縮寫,本意是red hat 軟體包管理,顧名思義是red hat 貢獻出來的軟體包管理 現在應為rpm package manager的縮寫。在fedora redhat mandriva suse yellowdog等主...

ubuntu deb安裝包製作方法

sudo apt get install dh make fakeroot 注 fakeroot 模擬root身份。2 製作makefile檔案 提供install和uninstall命令 3 把二進位制檔案以及makefile放入乙個帶有版本資訊的目錄中 client 0.1 makefile c...

CRAMFS製作方法

1.編譯cramfs製作工具mkcramfs a.解壓cramfs 1.1.tar.bz2,產生cramfs 1.1資料夾 b.使用終端進入cramfs 1.1資料夾,執行make,編譯cramfs製作工具 c.編譯產生mkcramfs和cramfsck兩個工具,將這兩個工具複製到 usr bin目...