RedHat補丁包下載與RPM包的制作
REDHAT AS4補丁SRPMS下載:http://ftp.redhat.com/pub/redhat/linux/updates/enterprise/4AS/en/os/SRPMS/
下載到的是源碼包,使用rpm -vih xx.rpm 後
在/usr/src/redhat/SPECS 下會有個 xx.spec
運行rpmbuild -bb xx.spec
就會在/usr/src/redhat/RPMS/i386(or i486 etc.) 目錄下生成對應的RPM包。
=============================================================================
spec文件規範
能熟練掌握以上命令以及部分參數含義,管理日常的rpm軟件包就不成問題了。然而隨著Linux風靡全球,越來越多的開發者喜歡采用RPM格式來發布自己的軟件包。那麽RPM軟件包是怎樣<nobr oncontextmenu="return false;" id="key2" this);" style="COLOR: #6600ff; BORDER-BOTTOM: 0px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" kwC();" this);" target="_blank">制作</nobr>的呢?對大多數Linux開發工程師來說是比較陌生的。
其實,制作RPM軟件包並不是一件復雜的工作,其中的關鍵在於編寫SPEC軟件包描述文件。要想制作一個rpm軟件包就必須寫一個軟件包描述文件(SPEC)。這個文件中包含了軟件包的諸多<nobr oncontextmenu="return false;" id="key1" this);" style="COLOR: #6600ff; BORDER-BOTTOM: 0px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" kwC();" this);" target="_blank">信息</nobr>,如軟件包的名字、版本、類別、說明摘要、創建時要執行什麽指令、安裝時要執行什麽操作、以及軟件包所要包含的文件列表等等。
描述文件說明如下:
(1) 文件頭
一般的spec文件頭包含以下幾個域:
Summary:
用一句話概括該軟件包盡量多的信息。
Name:
軟件包的名字,最終RPM軟件包是用該名字與版本號,釋出號及體系號來命名軟件包的。
Version:
軟件版本號。僅當軟件包比以前有較大改變時才增加版本號。
Release:
軟件包釋出號。一般我們對該軟件包做了一些小的補丁的時候就應該把釋出號加1。
Vendor:
軟件<nobr oncontextmenu="return false;" id="key3" this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" kwC();" this);" target="_blank">開發</nobr>者的名字。
Copyright:
軟件包所采用的版權規則。具體有:GPL(自由軟件),BSD,MIT,Public Domain(公共域),Distributable(貢獻),commercial(商業),Share(共享)等,一般的開發都寫GPL。
Group:
軟件包所屬類別,具體類別有:
CODE:
<ccid_nobr></ccid_nobr>
<ccid_code></ccid_code>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:
源程序軟件包的名字。如 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個字母,用<nobr oncontextmenu="return false;" id="key0" this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" kwC();" this);" target="_blank">中文</nobr>會報錯。接下來的行寫的是修改了什麽地方,可寫多行。一般以減號開始,便於後續的查閱。
4.打包
如果想發布rpm格式的源碼包或者是二進制包,就要使用rpmbuild工具(rpm最新打包工具)。如果我們已經根據本地源碼包的成功編譯安裝而寫了spec文件(該文件要以.spec結束),那我們就可以建立一個打包環境,也就是目錄樹的建立,一般是在/usr/src/redhat/目錄下建立5個目錄。它門分別是BUILD、SOURCE、SPEC、SRPM、RPM。其中BUILD目錄用來存放打包過程中的源文件,SOURCE用來存放打包是要用到的源文件和patch,SPEC用來存放spec文件,SRPM、RPM分別存放打包生成的rpm格式的源文件和二進制文件。當然我們可以根據需要來選用不同的參數打包文件,筆者總結如下3條。
1) 只生成二進制格式的rpm包
rpmbuild -bb xxx.spec
用此命令生成軟件包,執行後<nobr oncontextmenu="return false;" id="key4" this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" kwC();" this);" target="_blank">屏幕</nobr>將顯示如下信息:(每行開頭為行號)
CODE:
<ccid_nobr></ccid_nobr>
<ccid_code></ccid_code>1 Executing: %prep 2 + umask 022 3 + cd /usr/src/dist/BUILD 4 + exit 0 5 Executing: %build 6 + umask 022 7 + cd /usr/src/dist/BUILD
生成的文件會在剛才建立的RPM目錄下存在。
2)只生成src格式的rpm包
rpmbuild -bs xxx.spec
生成的文件會在剛才建立的SRPM目錄下存在。
3) 只需要生成完整的源文件
rpmbuild -bp xxx.spec
源文件存在目錄BUILD下。
讀者朋友可能對這個命令不太明白,這個命令的作用就是把tar包解開然後把所有的補丁文件合並而生成一個完整的具最新功能的源文件。
4) 完全打包
rpmbuild -ba xxx.spec
產生以上3個過程分別生成的包。存放在相應的目錄下。
軟件包制作完成後可用rpm命令查詢,看看效果。如果不滿意的話可以再次修改軟件包描述<nobr oncontextmenu="return false;" id="key5" this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" kwC();" this);" target="_blank">文件</nobr>,重新運行以上命令產生新的RPM軟件包。
本文出自 “學無止境。” 博客,請務必保留此出處http://aixer95.blog.51cto.com/943421/1971384
RedHat補丁包下載與RPM包的制作