青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-167  評論-8  文章-0  trackbacks-0

一 、rpm 介紹

1. 概述

RPM全稱是 Red Hat Package Manager(Red Hat包管理器)。幾乎所有的 Linux 發行版本都使用這種形式的軟件包管理安裝、更新和卸載軟件。

RPM是一個開放的軟件包管理系統。它工作于Red Hat Linux以及其它Linux和UNIX 系統,可被任何人使用。redhat軟件公司鼓勵其它廠商來了解RPM并在自己的產品中使用它。RPM的發布基于GPL協議。對于最終用戶來說,使用RPM所提供的功能來維護系統是比較容易和輕松的。安裝、卸載和升級RPM軟件包只需一條命令就可以搞定。RPM維護了一個所有已安裝的軟件包和文件的數據庫,可以讓用戶進行查詢和驗證工作。在軟件包升級過程中,RPM會對配置文件進行特別處理,絕對不會丟失以往的定制信息。對于程序員RPM可以讓我們連同軟件的源代碼打包成源代碼和二進制軟件包供最終用戶使用。

RPM擁有功能強大的查詢選項。我們可以搜索數據庫來查詢軟件包或文件。也可以查出某個文件屬于哪個軟件包或出自哪兒。RPM軟件包中的文件是以壓縮格式存放的,擁有一個定制的二進制頭文件,其中包含有關包和內容的信息,可以讓我們對單個軟件包的查詢簡便又快速。

RPM另一個強大的功能是進行軟件包的驗證。如果我們擔心誤刪了某個軟件包中的某個文件,我們就可以對它進行驗證。任何非正常現象將會被通知。如果需要的話還可以重新安裝該軟件包。在重新安裝過程中,所有被修改過的配置文件將被保留。

RPM設計目標之一就是要保持軟件包的原始特征, 就象該軟件的原始發布者發布軟件時那樣。通過使用RPM我們可以擁有最初的軟件和最新的補丁程序,還有詳細的軟件構建信息。

概括的說:RPM有五種基本的操作功能(不包括創建軟件包):安裝、卸載、升級、查詢、和驗證。關于rpm命令的使用我們可以用以下命令:

[root@hostname root]rpm -help

來獲的。

2.RPM工具功能

1) 安裝

rpm -i ( or --install) options file1.rpm ... fileN.rpm 通過rpm -ivh可以把rpm軟件包安裝到系統中,當然也可以使用不同的參數選項,筆者建議使用-ivh ,使用該選項可以解決大部分rpm軟件包的安裝,至于詳細的參數說明可用查看rpm的man 文檔。

2 )刪除

rpm -e ( or --erase) options pkg1 ... pkgN 如果某個軟件包你再也不想使用了,那就用以上這個命令徹底的把你指定的rpm軟件包清除掉把。

3 )升級

rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm 由于開源軟件更新速度快,用戶當然要使用最新版本的軟件包,此時最合適的就是rpm升級功能,當然最理想的參數選項就是-Uvh。

4 )查詢

rpm -q ( or --query) options 實際上我們通常使用rpm工具最多的功能還是它的查詢功能,比如查看軟件包的版本、依賴關系等軟件包的詳細說明都要用到。最有用的參數選項是-qpi。

5 )校驗已安裝的軟件包

rpm -V ( or --verify, or -y) options 一般我們可用通過該命令來驗證已安裝軟件包,根據筆者的經驗該命令一般沒什么用途,只做一個了解就ok了。

3.spec文件規范

能熟練掌握以上命令以及部分參數含義,管理日常的rpm軟件包就不成問題了。然而隨著Linux風靡全球,越來越多的開發者喜歡采用RPM格式來發布自己的軟件包。那么RPM軟件包是怎樣制作的呢?對大多數Linux開發工程師來說是比較陌生的。

其實,制作RPM軟件包并不是一件復雜的工作,其中的關鍵在于編寫SPEC軟件包描述文件。要想制作一個rpm軟件包就必須寫一個軟件包描述文件(SPEC)。這個文件中包含了軟件包的諸多信息,如軟件包的名字、版本、類別、說明摘要、創建時要執行什么指令、安裝時要執行什么操作、以及軟件包所要包含的文件列表等等。

描述文件說明如下:

(1) 文件頭

一般的spec文件頭包含以下幾個域:

Summary:
用一句話概括該軟件包盡量多的信息。

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

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

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

Vendor:
軟件開發者的名字。

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:
源程序軟件包的名字。如 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個字母,用中文會報錯。接下來的行寫的是修改了什么地方,可寫多行。一般以減號開始,便于后續的查閱。

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
用此命令生成軟件包,執行后屏幕將顯示如下信息:(每行開頭為行號)

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命令查詢,看看效果。如果不滿意的話可以再次修改軟件包描述文件,重新運行以上命令產生新的RPM軟件包。

二.典型spec文件分析

通過第一部分的介紹,我們對軟件包的管理以及spec文件的一些細節應該掌握的差不多了,接下來通過分析kaffeine.spec(kaffeine是linux平臺下的媒體播放器)文件來讓讀者朋友實踐一回spec文件的規范和書寫。

Kaffeine.spec文件內容如下:

%define debug_package %{nil}
Name:         kaffeine
Version:        0.4.3
Release:        25
Summary:        A xine-based Media Player for KDE
Group:          Applications/Multimedia
License:        GPL
URL:            http://kaffeine.sourceforge.net/
Source0:        kaffeine-0.4.3.tar.bz2
Source1:        logo.png
Source2:	icon.tgz
Source3:        kaffeine.desktop
Source4:        codecs.tgz
Patch: kaffeine-0.4.3-fix-hide-crash.patch
Patch1:kaffeine-0.4.3-without-wizard.patch
BuildRoot:      /var/tmp/kaffeine-root
%description
Kaffeine is a xine based media player for KDE3. It plays back CDs,
DVDs, and VCDs. It also decodes multimedia files like AVI, MOV, WMV,
and MP3 from local disk drives, and displays multimedia streamed over
the Internet. It interprets many of the most common multimedia formats
available - and some of the most uncommon formats, too. Additionally,
Kaffeine is fully integrated in KDE3, it supports Drag and Drop and
provides an editable playlist, a bookmark system, a Konqueror plugin,
a Mozilla plugin, OSD an much more.

以上這部分就是我們第一部分所說的文件頭。這一部分主要包括軟件包的名稱、版本、源代碼和patch等信息,通過這些關鍵字我們可以一目了然。查看以上內容,我們會全面了解該軟件包。

接下來的這一個段就是核心部分,涉及到解包、補丁、編譯、安裝的過程。

%prep
%setup -q
%patch -p1
%patch1 -p1
%Build
make -f admin/Makefile.common cvs
./configure --prefix=/usr
make
#for mo files
pushd po
rm *.gmo
make
popd
%install
mkdir -p $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/usr/share/services
cp $RPM_BUILD_ROOT/usr/share/apps/kaffeine/mms.protocol 
     $RPM_BUILD_ROOT/usr/share/services
cp $RPM_BUILD_ROOT/usr/share/apps/kaffeine/rtsp.protocol 
    $RPM_BUILD_ROOT/usr/share/services
#mkdir -p $RPM_BUILD_ROOT/usr/lib/firefox/plugins
#cp $RPM_BUILD_ROOT/usr/lib/kaffeineplugin/kaffeineplugin.so
$RPM_BUILD_ROOT/usr/lib/firefox/plugins
cp %{SOURCE1} $RPM_BUILD_ROOT/usr/share/apps/kaffeine
rm -rf $RPM_BUILD_ROOT/usr/share/icons/hicolor/*/apps/kaffeine.png
rm -rf $RPM_BUILD_ROOT/usr/share/icons/hicolor/*/apps/kaffeine-pause.png
rm -rf $RPM_BUILD_ROOT/usr/share/icons/hicolor/*/apps/kaffeine-play.png
rm -rf $RPM_BUILD_ROOT/usr/share/icons/hicolor/*/apps/kaffeine-record.png
mkdir -p $RPM_BUILD_ROOT/usr/share/icons/crystalsvg
tar zxvf %{SOURCE2} -C $RPM_BUILD_ROOT/usr/share/icons/crystalsvg
mkdir -p $RPM_BUILD_ROOT/usr/share/applnk/App/Multimedia
cp -r %{SOURCE3} $RPM_BUILD_ROOT/usr/share/applnk/App/Multimedia
mkdir -p $RPM_BUILD_ROOT/usr/lib/win32
tar zxvf %{SOURCE4} -C $RPM_BUILD_ROOT/usr/lib/win32
%clean
rm -rf $RPM_BUILD_ROOT
%post
ln -s /dev/cdrom /dev/dvd
ln -s /dev/cdrom /dev/rdvd
%files
%defattr(-,root,root)
/usr

這部分內容與所要打的包有關系,我們要根據具體情況來寫出編譯過程。這部分內容是最復雜的內容,當然,我們也可以看出,這樣的寫法其實就是在寫一種規范化的腳本,說到腳本,讀者朋友門就應該領會到這部分內容的靈活性了。

%changelog
* Fri Jul 1  2005 AiLin Yang <alyang@redflag-linux.com> -0.4.3-25
- modified the fullscreen bottom control panel
* Fri Jun 17 2005 xxx <xxx@redflag-linux.com> -0.4.3-24
- Modified to use xshm as video driver.
* Thu Jun 16 2005 AiLin Yang <alyang@redflag-linux.com>
- delete the option of Embed in system tray in configwidget
* Tue Jun 14 2005 AiLin Yang <alyang@redflag-linux.com>
- add fullscreen bottom control panel
- update kaffine to support my fullscreen bottom control panel

這部分內容可以說是spec文件的最后內容了,它對團隊軟件開發以及后續的軟件維護至關重要,它相當于一個日志,記錄了所有的基于該軟件包的修改、更新信息。

小結

在Linux下RPM軟件包的管理與RPM軟件包的制作關鍵在rpm工具的使用和spec描述文件的起草。要想制作一個RPM格式的軟件包必須編寫軟件包描述文件。其標準命名格式為:軟件名-版本號-釋出號.spec,這個文件詳細描述了有關該軟件包的諸多信息,如軟件名,版本,類別,說明摘要,創建時要執行什么指令,安裝時要執行什么操作,以及軟件包所要包含的文件等等。有了這個文件RPM就可以制作出相應的rpm軟件包。

posted on 2011-08-23 14:47 老馬驛站 閱讀(365) 評論(0)  編輯 收藏 引用 所屬分類: linux
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            美女主播精品视频一二三四| 欧美一区二区三区在线视频| 欧美日韩国产综合新一区| 亚洲二区视频在线| 欧美一区二区在线视频| 亚洲午夜精品久久| 久热re这里精品视频在线6| 黑人巨大精品欧美黑白配亚洲| 欧美一区二粉嫩精品国产一线天| 欧美一区2区视频在线观看| 久久精品日韩| 一区二区三欧美| 欧美福利视频| 久久久999精品视频| 91久久精品国产91性色tv| 欧美三级电影一区| 欧美一区影院| 中日韩在线视频| 欧美国产欧美亚洲国产日韩mv天天看完整 | 久久在线免费| 亚洲一区网站| 亚洲精品在线三区| 老牛影视一区二区三区| 91久久精品视频| 久久久久国产成人精品亚洲午夜| 黄色一区二区在线| 国产精品99久久久久久久女警| 久久婷婷成人综合色| 国产精品日韩欧美一区二区三区| 欧美激情影音先锋| 亚洲精品之草原avav久久| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲欧美三级在线| 久久综合激情| 99伊人成综合| 99re66热这里只有精品4| 欧美成人高清视频| 欧美不卡一卡二卡免费版| 99精品国产福利在线观看免费| 久久狠狠婷婷| 久久综合伊人77777| 欧美日一区二区在线观看| 在线视频国内自拍亚洲视频| 红桃视频亚洲| 亚洲欧美日本日韩| 午夜精品在线看| 欧美一区网站| 久久精品主播| 亚洲伊人第一页| 欧美日韩视频第一区| 国产精品久久久久三级| 国产精品一区久久久久| 国产乱子伦一区二区三区国色天香| 亚洲三级免费电影| 亚洲视频一区二区| 亚洲综合色婷婷| 久久精品国产亚洲一区二区三区| 久久精品一区二区三区不卡牛牛| 一区二区三区毛片| 国产精品国产三级国产普通话99 | 欧美国产第一页| 亚洲欧美日韩国产中文| 国产精品国产三级国产| 亚洲风情在线资源站| 国产欧美三级| 黄色亚洲免费| 欧美综合国产| 男女精品网站| 久久综合99re88久久爱| 影音先锋成人资源站| 99精品视频免费全部在线| 日韩亚洲欧美中文三级| 亚洲国产精品久久久| 亚洲国产一区二区三区a毛片| 亚洲东热激情| 亚洲成人资源网| 一本综合久久| 国产精品理论片在线观看| 午夜国产精品视频| 欧美在线首页| 亚洲黄色三级| 正在播放亚洲| 韩国自拍一区| 亚洲人线精品午夜| 久久久久久久久久久久久9999| 亚洲成人在线网站| 亚洲精品欧美在线| 国产日韩精品久久久| 欧美r片在线| 欧美日韩国产首页在线观看| 欧美一级午夜免费电影| 亚洲人成在线观看网站高清| 欧美午夜视频| 亚洲国产精品一区制服丝袜| 亚洲国产综合91精品麻豆| 国产精品你懂的在线欣赏| 免费成人网www| 欧美专区18| aa日韩免费精品视频一| 欧美激情视频一区二区三区免费| 欧美日韩三级视频| 两个人的视频www国产精品| 欧美日韩久久不卡| 免费久久精品视频| 国产精品在线看| 亚洲第一主播视频| 国产亚洲成av人片在线观看桃 | 亚洲激情不卡| 亚洲天堂网在线观看| 亚洲成人在线免费| 先锋影音国产一区| 国内精品免费午夜毛片| 午夜精品久久久久久久男人的天堂 | 欧美一区二区三区四区在线观看| 欧美a级片网站| 亚洲国语精品自产拍在线观看| 中国av一区| 一本色道久久综合亚洲精品高清 | 亚洲深夜福利网站| 久久久久九九视频| 99这里只有久久精品视频| 欧美在线视屏| 亚洲欧美国产三级| 欧美电影在线| 亚洲电影观看| 欧美一区在线视频| 欧美一区二区三区播放老司机 | 欧美精品aa| 亚洲小说春色综合另类电影| 亚洲精品一区二区三区樱花| 激情小说另类小说亚洲欧美| 亚洲欧美日韩天堂一区二区| 亚洲天堂av电影| 欧美片在线观看| 欧美一区视频| 国产嫩草一区二区三区在线观看 | 亚洲欧美日韩综合| 亚洲综合精品四区| 国产精品久久久久秋霞鲁丝| 中文精品99久久国产香蕉| 亚洲影视在线播放| 国产精品一区免费在线观看| 亚洲欧美日韩在线播放| 欧美中文字幕在线| 极品少妇一区二区| 欧美成人激情视频| 亚洲精品久久7777| 亚洲在线观看免费| 国产亚洲制服色| 亚洲韩日在线| 在线天堂一区av电影| 久久色中文字幕| 亚洲午夜精品久久| 国产精品久久久久毛片大屁完整版 | 欧美成人综合| 夜色激情一区二区| 久久久精品国产免大香伊 | 亚洲专区一二三| 国产视频一区三区| 六月婷婷久久| 亚洲视频1区| 久久综合狠狠综合久久综合88| 在线视频国内自拍亚洲视频| 欧美日本亚洲视频| 性欧美xxxx视频在线观看| 另类av一区二区| 99热免费精品| 国产亚洲欧美一区| 欧美国产日韩在线观看| 亚洲欧美国产高清| 亚洲一区日本| 国内精品久久久久久久97牛牛| 欧美成人中文| 欧美一区91| 亚洲乱码国产乱码精品精| 欧美一级淫片播放口| 亚洲区一区二| 狠狠爱www人成狠狠爱综合网| 99亚洲一区二区| 欧美伦理91| 亚洲性色视频| 欧美福利视频在线| 亚洲欧美制服中文字幕| 亚洲高清视频的网址| 国产精品美女一区二区在线观看| 久久成人精品| 亚洲视频网站在线观看| 久久久国产一区二区| 日韩午夜电影| 伊人成人开心激情综合网| 欧美视频1区| 欧美电影电视剧在线观看| 亚洲欧美日韩国产综合| 亚洲理论在线| 亚洲国产精品一区制服丝袜| 久久精品青青大伊人av| 亚洲专区一区| 亚洲午夜视频在线观看| 亚洲精品国产无天堂网2021| 激情综合中文娱乐网|