Linux rpm安裝源代碼打包
Linux rpm更新了很多版本更新,我本人認(rèn)為L(zhǎng)inux rpm很好使的文件系統(tǒng),在此向大家推薦。如今技術(shù)不斷更新,各種使用文件都已經(jīng)淘汰。我認(rèn)為還是有很不錯(cuò)的如Linux rpm值得大家來(lái)運(yùn)用。
一、安裝Linux rpmbuild
// for fedora linux yum install Linux rpmbuild -y
// for ubuntu apt-get install Linux rpmbuild
二、Linux rpm specification file
spec文件規(guī)范能熟練掌握以上命令以及部分參數(shù)含義,管理日常的Linux rpm軟件包就不成問(wèn)題了。然而隨著Linux風(fēng)靡全球,越來(lái)越多的開發(fā)者喜歡采用Linux rpm格式來(lái)發(fā)布自己的軟件包。那么Linux rpm軟件包是怎樣制作的呢?對(duì)大多數(shù)Linux開發(fā)工程師來(lái)說(shuō)是比較陌生的。
其實(shí),制作Linux rpm軟件包并不是一件復(fù)雜的工作,其中的關(guān)鍵在于編寫SPEC軟件包描述文件。要想制作一個(gè)Linux rpm軟件包就必須寫一個(gè)軟件包描述文件 (SPEC)。這個(gè)文件中包含了軟件包的諸多信息,如軟件包的名字、版本、類別、說(shuō)明摘要、創(chuàng)建時(shí)要執(zhí)行什么指令、安裝時(shí)要執(zhí)行什么操作、以及軟件包所要 包含的文件列表等等。描述文件說(shuō)明如下:
(1) 文件頭
一般的spec文件頭包含以下幾個(gè)域:Summary:用一句話概括該軟件包盡量多的信息。Name:軟件包的名字,最終Linux rpm軟件包是用該名字與版本號(hào),釋出號(hào)及體系號(hào)來(lái)命名軟件包的。Version:軟件版本號(hào)。僅當(dāng)軟件包比以前有較大改變時(shí)才增加版本號(hào)。
Release:軟件包釋出號(hào)。一般我們對(duì)該軟件包做了一些小的補(bǔ)丁的時(shí)候就應(yīng)該把釋出號(hào)加1。Vendor:軟件開發(fā)者的名字。Copyright:軟件包所采用的版權(quán)規(guī)則。具體有:GPL(自由軟件),BSD,MIT,Public Domain(公共域),Distributable(貢獻(xiàn)),commercial(商業(yè)),Share(共享)等,一般的開發(fā)都寫GPL。
- Group: 軟件包所屬類別,具體類別有:
- Amusements/Games (娛樂(lè)/游戲)
- Amusements/Graphics(娛樂(lè)/圖形)
- Applications/Archiving (應(yīng)用/文檔)
- Applications/Communications(應(yīng)用/通訊)
- Applications/Databases (應(yīng)用/數(shù)據(jù)庫(kù))
- Applications/Editors (應(yīng)用/編輯器)
- Applications/Emulators (應(yīng)用/仿真器)
- Applications/Engineering (應(yīng)用/工程)
- Applications/File (應(yīng)用/文件)
- Applications/Internet (應(yīng)用/因特網(wǎng))
- Applications/Multimedia(應(yīng)用/多媒體)
- Applications/Productivity (應(yīng)用/產(chǎn)品)
- Applications/Publishing(應(yīng)用/印刷)
- Applications/System(應(yīng)用/系統(tǒng))
- Applications/Text (應(yīng)用/文本)
- Development/Debuggers (開發(fā)/調(diào)試器)
- Development/Languages (開發(fā)/語(yǔ)言)
- Development/Libraries (開發(fā)/函數(shù)庫(kù))
- Development/System (開發(fā)/系統(tǒng))
- Development/Tools (開發(fā)/工具)
- Documentation (文檔)
- System Environment/Base(系統(tǒng)環(huán)境/基礎(chǔ))
- System Environment/Daemons (系統(tǒng)環(huán)境/守護(hù))
- System Environment/Kernel (系統(tǒng)環(huán)境/內(nèi)核)
- System Environment/Libraries (系統(tǒng)環(huán)境/函數(shù)庫(kù))
- System Environment/Shells (系統(tǒng)環(huán)境/接口)
- User Interface/Desktops(用戶界面/桌面)
- User Interface/X (用戶界面/X窗口)
- User Interface/X Hardware Support (用戶界面/X硬件支持)
Source:源程序軟件包的名字。如 stardict-2.0.tar.gz。%description:軟件包詳細(xì)說(shuō)明,可寫在多個(gè)行上。
(2)%prep段
這個(gè)段是預(yù)處理段,通常用來(lái)執(zhí)行一些解開源程序包的命令,為下一步的編譯安裝作準(zhǔn)備。%prep和下面的%build,%install段一樣,除 了可以執(zhí)行Linux rpm所定義的宏命令(以%開頭)以外,還可以執(zhí)行SHELL命令,命令可以有很多行,如我們常寫的tar解包命令。
(3)build段
本段是建立段,所要執(zhí)行的命令為生成軟件包服務(wù),如make 命令。
(4)%install段
本段是安裝段,其中的命令在安裝軟件包時(shí)將執(zhí)行,如make install命令。
(5)%files段
本段是文件段,用于定義軟件包所包含的文件,分為三類--說(shuō)明文檔(doc),配置文件(config)及執(zhí)行程序,還可定義文件存取權(quán)限,擁有者及組別。
(6)%changelog段
本段是修改日志段。你可以將軟件的每次修改記錄到這里,保存到發(fā)布的軟件包中,以便查詢之用。每一個(gè)修改日志都有這樣一種格式:***行是:* 星期 月 日 年 修改人 電子信箱。其中:星期、月份均用英文形式的前3個(gè)字母,用中文會(huì)報(bào)錯(cuò)。接下來(lái)的行寫的是修改了什么地方,可寫多行。一般以減號(hào)開始,便于后續(xù)的查閱。
三、源代碼打包
將源代碼打包,如 stardict-2.0.tar.gz,并將文件放到spec文件Source段所描述的路徑下,通常為/usr/src/redhat/SOURCES/目錄下(不同的Linux發(fā)布版本略有不同,如OpenSUSE為 /usr/src/packages/SOURCES/)
四、Linux rpm打包
Linux rpmbuild -ba ‘spec文件路徑’(Linux rpmbuild常用參數(shù): -bb 只編譯二進(jìn)制Linux rpm包 -bs 只編譯源碼Linux rpm包 -ba 同時(shí)編譯二進(jìn)制和源碼Linux rpm包)build完后,可以在/usr/src/redhat/Linux rpmS/下找到二進(jìn)制Linux rpm包,Linux rpm包按照其對(duì)應(yīng)的cpu體系結(jié)構(gòu)分類,通常在/usr/src/redhat/Linux rpmS/i386目錄下/usr/src/redhat/SLinux rpmS/下找到源碼Linux rpm包,此時(shí)由于是源代碼,所以無(wú)須按體系結(jié)構(gòu)分類。
【編輯推薦】