CentOS6.x下製作RPM包

來源:互聯網
上載者:User

0:說明本文以centOS6.5下打包asterisk的安裝包為例來說明問題。請讀者諸君舉一反三。謝謝!1.環境的準備:

安裝環境時目前使用者要有系統管理許可權。但是在製作RPM包時請一定要用無系統管理許可權的使用者來進行操作。在開始一切的準備工作之前,請先保證您的工作環境下已經安裝了gcc和make。關於這兩個工具的安裝方法,這裡不再贅述。

1.1安裝組件

安裝rpm-build,用如下命令:

sudo yum install rpm-build

安裝redhat-rpm-config,用如下命令:

sudo yum install redhat-rpm-config

PS:如果工作人員認為有必要的話可以安裝rpmdev-newspec。這個小工具是用來產生.spec檔案模板的。因為不是必選工具所以關於它的安裝和使用方法在這裡就不再贅述。

1.2在使用者的主目錄下建立必須的檔案夾和檔案

用下面的命令建立必要的檔案夾,其中BUILD是用來儲存打包過程中產生的臨時檔案用的;RPMS用來儲存產生的二進位RPM包;SOURCES用來儲存打包用的源檔案(包括壓縮檔);SPECS用來儲存.spec指令碼;SRPMS用來儲存產生的原始碼rpm包。

mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

用下面的命令產生rpmbuild所需要的宏檔案,這個檔案裡包含的是.spec中要引用的相對路徑。檔案裡的內容可以手動設定和編寫,格式符合要求即可。

echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
2.製作.spec檔案

這裡用我們製作asterisk的二進位rpm包為例來說明製作.spec檔案的方法。所有的.spec檔案都可以參照和類比這種方式來製作。

2.1.spec檔案的格式

用如下命令產生asterisk.spec

cd ~/rpmbuild
vi ./SPECS/asterisk.spec

我將如下的內容輸入到了檔案中。

Name: asterisk
Version: 1.8.15
Release: 1%{?dist}
Summary: Design by wanzhao
Group: Applications/Internet
License: GPL
URL: www.wanzhao.com
Source0: certified-asterisk-1.8.15-current.tar.gz

%description
Design by Wanzhao

%prep
cd $RPM_BUILD_DIR
tar xzvf ../SOURCES/certified-asterisk-1.8.15-current.tar.gz

%build
cd $RPM_BUILD_DIR/certified-asterisk-1.8.15-cert5
./configure
make

%install
cd $RPM_BUILD_DIR/certified-asterisk-1.8.15-cert5
make install
make samples 
cd ../BUILDROOT
cp -fr /etc/asterisk ./asterisk-1.8.15-1.x86_64/

%files
/asterisk/

%clean
rm -rf $RPM_BUILD_DIR/certified-asterisk-1.8.15-cert5
2.2asterisk內容說明

Name:

軟體包的名字,最終RPM軟體包是用該名字與版本號碼,釋出號及體系號來命名軟體包的。

Version:

軟體版本號碼。僅當軟體包比以前有較大改變時才增加版本號碼。

Release:

軟體包釋出號。一般我們對該軟體包做了一些小的補丁的時候就應該把釋出號加1。

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:

來源程式軟體包的名字。如果有多個檔案或部分可以寫作:Source0……;source1……;Source3……;……

%description:

軟體包詳細說明,可寫在多個行上。

%prep

這個段是預先處理段,通常用來執行一些解開來源程式包的命令,為下一步的編譯安裝作準備。%prep和下面的%build,%install段一樣,可以執行shell命令。如我們在就加入了tar命令、cd命令等。

% build段

本段是編譯段,所要執行的命令為產生軟體包服務,如./configure、make 命令。

%install段

本段是安裝段,其中的命令在安裝軟體包時將執行,如make install等命令。根據不同的軟體,命令會有所不同。

%files段

本段是檔案段,用於定義產生的rpm包所包含的檔案。所以要打到rpm包裡的檔案都要在這裡列出來。如果缺少這個段,則無法產生二進位的rpm檔案。

%clean段

本段是生來清理由前面的步驟產生的垃圾檔案的。同樣,這個段由shell命令組成。

3.打包

如果只打包二進位rpm包可以用下面的命令:

rpmbuild –bb ****.spec

如果只打包原始碼rpm包可以用如下命令:

rpmbuild –bs ****.spec

如果二進位rpm包和原始碼rpm包都需要,則用如下命令:

rpmbuild –ba ****.spec

4.參考資料:

http://wiki.centos.org/HowTos/SetupRpmBuildEnvironment

http://tecadmin.net/create-rpm-of-your-own-script-in-centosredhat/

https://fedoraproject.org/wiki/How_to_create_a_GNU_Hello_RPM_package

http://www.ibm.com/developerworks/cn/linux/l-rpm/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.