歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> Linux下制作RPM軟件包的關鍵所在

Linux下制作RPM軟件包的關鍵所在

日期:2017/2/27 14:23:12   编辑:更多Linux
  隨著RedHat Linux的風靡全球,其軟件包管理工具及格式RPM也得到推廣。基於RPM源代碼開放、安裝卸載簡單、升級維護方便及查詢功能強大的特點,越來越多的開發者喜歡采用RPM格式來發布自己的軟件包,更多的用戶從中受益。那麼,RPM軟件包是怎樣制作的呢?     其實,制作RPM軟件包並不是一件復雜的工作,其中的關鍵在於編寫SPEC軟件包描述文件。下面以我制作小趙編輯器LZE的軟件包(lze-6.0-1.i386.rpm)為例,詳細說明一下軟件包的制作過程。     1.mkdir -p /usr/src/dist/{BUILD,RPMS/i386}     上述命令用於創建兩個目錄/usr/src/dist/BUILD與/usr/src/dist/RPMS/i386,前一個目錄是RPM建立軟件包時用的目錄,後一個是RPM輸出軟件包的目錄,我的LZE軟件包lze-6.0-1.i386.rpm就是在此目錄下存放的。這兩個目錄不創建,運行rpm命令建包時將報錯退出。     注意:輸出目錄名i386,意味著這是台X86的機器。如果你的機器與此體系不同,則目錄名也要相應更換。     2.編寫軟件包描述文件lze-6.0-1.spec     要想制作一個軟件包,就必須寫一個軟件包描述文件(SPEC)。這個文件中包含了軟件包的諸多信息,如軟件包的名字,版本,類別,說明摘要,創建時要執行什麼指令,安裝時要執行什麼操作,以及軟件包所要包含的文件列表等等。     LZE軟件包描述文件lze-6.0-1.spec比較簡單,僅用於創建二進制程序包。其描述文件內容如下:(每行開頭的數字為所在行在文件中的行號)     1 Summary:小趙全屏幕中英文多窗口多功能編輯器(Linux/UNIX系統適用)   2 Name:lze   3 Version:6.0   4 Release:1   5 Vendor:縱橫軟件制作中心(Email:[email protected])   6 Copyright:Share   7 Group:Applications/Editors   8 Source:http://zhsoft.myetang.com/lze-6.0.tar.gz   9 %description   10 小趙編輯器,是為使用SCO UNIX,Linux多用戶系統的廣大用戶專門設計的全屏幕多窗   11 口中英文多功能編輯器。   12 它主要有以下十大特點:1.全屏幕菜單操作。2.顯示方式多樣。3.塊操作豐富。4.十   13 字制表功能強大。5.多窗口操作靈活自如。6.文件操作功能齊全。7.解釋輸出功能獨具特   14 色。8.自帶中文輸入法(增強五筆和增強拼音),實用方便。9.十六進制編輯功能,如虎   15 添翼。10.即時翻譯,按到即譯。   16 總之,小趙編輯器會成為您在UNIX,Linux系統上編制程序和書寫一般性文稿的好幫手。   17 它將在工作中助您一臂之力,輕松上陣,游刃有余!   18   19 %prep   20 # prep start.   21   22 %build   23 # build start.   24 cp /root/{讀我,版權聲明} .   25   26 %install   27 # install start.   28   29 %files   30 %defattr (-,root,root)   31 %doc 讀我   32 %doc 版權聲明   33 %config /etc/funkey.def   34 %config /etc/inputme.def   35   36 /usr/bin/lze   37 /usr/bin/lzeime.py   38 /usr/bin/lzeime.wb   39   40 %changelog   41   42 * Fri May 1 1998 雨亦奇   43 - 增加多窗口操作   44   45 * Mon Mar 24 1997 雨亦奇   46 - 增加塊操作命令   47     描述文件說明如下:     (1)文件頭     它包含以下幾個域:     * Summary:   軟件包一句話說明,一行有效。   * Name:   軟件包的名字,RPM用該名字與版本號,釋出號及體系號來命名軟件包。如,本例輸出的軟件包名為lze-6.0-1.i386.rpm。   * Version:   軟件版本號。僅當軟件較以前有較大改變時才增加版本號。   * Release:   軟件釋出號。若軟件較以前改變較小,則僅增加釋出號,不改變版本號。   * Vendor:   軟件開發者的名字。   * Copyright:   軟件包所采用的版權規則。具體有: GPL(自由軟件),BSD,MIT,Public Domain(公共域),Distributable(貢獻),commercial(商業),Share(共享)等。   * 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:   源程序軟件包的名字。   * %description:   軟件包具體說明,可寫在多個行上。示例中第10-18行均為說明。     (2)%prep段     這個段是預處理段,通常用來執行一些解開源程序包的命令,為下一步的編譯安裝作准備。%prep和下面%build,%install段一樣,除了可以執行RPM所定義的宏命令(以%開頭)以外,還可以執行SHELL命令,命令可以有很多行。示例中,本段只有第20行一行注釋語句(以#開頭),不執行任何操作。     (3)build段     本段是建立段,所執行的命令為生成軟件包服務。     本段第23行是注釋行,第24行執行的是拷貝命令,將/root目錄下的兩個文件(讀我,版權聲明)拷貝到軟件包建立目錄(/usr/src/dist/BUILD)。     (4)%install段     本段是安裝段,其中的命令在安裝軟件包時將執行。示例中,本段只有第27行一行注釋語句(以#開頭),不執行任何操作。     (5)%files段     本段是文件段,用於定義軟件包所包含的文件,分為三類--說明文檔(doc),配置文件(config)及執行程序,還可定義文件存取權限,擁有者及組別。本段中:     第30行-%defattr宏:定義文件存取權限為默認值(用-表示默認值,也可選擇八進制數值,如0777等),定義擁有者為root,定義組別為root。     第31,32行-%doc宏:用該宏定義軟件包所含的說明文檔,若沒有指定目錄,則目錄為/usr/src/dist/BUILD。每個宏只能定義一個說明文檔。說明文檔一般安裝在“/usr/doc/軟件包名-版本號-釋出號”目錄下。     第33,34行-%config宏:定義軟件包應用的配置文件,象sendmail.cf,passwd等。當卸載含有配置文件的軟件包時,任何未作改動的配置文件將被刪除,改動過的配置文件將自動改名,後綴加上.rpmsave,以便再度安裝這個軟件包時可以迅速恢復使用。     第36-38行-為軟件包所包含的文件名列表,可以寫許多行。如果文件名指示的是一個目錄,則該目錄下的所有文件將被包含在軟件包中,注意不要弄錯了。     (6)%changelog段     本段是修改日志段。你可以將軟件的每次修改記錄到這裡,保存到發布的軟件包中,以便查詢之用。     每一個修改日志都有這樣一種格式:第一行是:* 星期 月 日 年 修改人 電子信箱。     其中:星期、月份均用英文形式,用中文會出錯。     接下來的行寫的應是修改了什麼地方,可寫多行。一般以減號起始,便於查閱。     3.rpm -bb lze-6.0-1.spec     用此命令生成軟件包,執行後屏幕將顯示如下信息:(每行開頭為行號)     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   8 + cp /root/讀我 /root/版權聲明.   9 + exit 0   10 Executing: %install   11 + umask 022   12 + cd /usr/src/dist/BUILD   13 + exit 0   14 Processing files: lze   15 Executing: %doc   16 + umask 022   17 + cd /usr/src/dist/BUILD   18 + DOCDIR=/usr/doc/lze-6.0   19 + eXPort DOCDIR   20 + rm -rf /usr/doc/lze-6.0   21 + /bin/mkdir -p /usr/doc/lze-6.0   22 + cp -pr 讀我 /usr/doc/lze-6.0   23 + cp -pr 版權聲明 /usr/doc/lze-6.0   24 + exit 0   25 Finding




Copyright © Linux教程網 All Rights Reserved