隨筆-49  評(píng)論-67  文章-27  trackbacks-0

          RPM 有五種基本的操作方式(不包括創(chuàng)建軟件包):安裝,卸載,升級(jí),查詢和驗(yàn)證。 下面我們就來(lái)逐一的講解吧。

          1 安裝RPM

          RPM 軟件包通常具有類似foo-1.0-1.i386.rpm的文件名。其中包括軟件包的名稱(foo)、版本號(hào)(1.0)、發(fā)行號(hào)(1)和硬件平臺(tái)(i386)。安裝一個(gè)軟件包只需簡(jiǎn)單的鍵入以下命令:

          $ rpm -ivh foo-1.0-1.i386.rpm

          foo ####################################

          RPM安裝完畢后會(huì)打印出軟件包的名字(并不一定與文件名相同),而后打印一連串的#號(hào)以表示安裝進(jìn)度。雖然軟件包的安裝被設(shè)計(jì)的盡量簡(jiǎn)單易行,但還是可能會(huì)發(fā)生如下的錯(cuò)誤:

          1 軟件包已被安裝

          如果您的軟件包已被安裝 將會(huì)出現(xiàn)以下信息:

          $ rpm -ivh foo-1.0-1.i386.rpm

          foo package foo-1.0-1 is already installed

          error: foo-1.0-1.i386.rpm cannot be installed

          如果您仍舊要安裝該軟件包,可以在命令行上使用--replacepkgs 選項(xiàng),RPM將忽略該錯(cuò)誤信息強(qiáng)行安裝。

          2、文件沖突

          如果您要安裝的軟件包中有一個(gè)文件已在安裝其它軟件包時(shí)安裝,會(huì)出現(xiàn)以下錯(cuò)誤信息:

          # rpm -ivh foo-1.0-1.i386.rpm

          foo /usr/bin/foo conflicts with file from bar-1.0-1

          error: foo-1.0-1.i386.rpm cannot be installed

          要想讓RPM 忽略該錯(cuò)誤信息,請(qǐng)使用--replacefiles 命令行選項(xiàng)。

          3、未解決依賴關(guān)系

          RPM軟件包可能依賴于其它軟件包,也就是說(shuō)要求在安裝了特定的軟件包之后才能安裝該軟件包。如果在您安裝某個(gè)軟件包時(shí)存在這種未解決的依賴關(guān)系。會(huì)產(chǎn)生以下信息:

          $ rpm -ivh bar-1.0-1.i386.rpm

          failed dependencies: foo is needed by bar-1.0-1

          您必須安裝完所依賴的軟件包,才能解決這個(gè)問(wèn)題。如果您想強(qiáng)制安裝(這是個(gè)壞主意,因?yàn)榘惭b后的軟件包未必能正常運(yùn)行),請(qǐng)使用--nodeps 命令行選項(xiàng)。

          2 卸載RPM

          卸載軟件包就像安裝軟件包時(shí)一樣簡(jiǎn)單:

          $ rpm -e foo

          注意這里使用軟件包的名字foo,而不是軟件包文件的名字foo-1.0-1.i386.rpm。如果其它軟件包依賴于您要卸載的軟件包,卸載時(shí)則會(huì)產(chǎn)生錯(cuò)誤信息。如:

          $ rpm -e foo

          removing these packages would break dependencies:foo is needed by bar-1.0-1

          若讓RPM忽略這個(gè)錯(cuò)誤繼續(xù)卸載(這可不是一個(gè)好主意,因?yàn)橐蕾囉谠撥浖某绦蚩赡軣o(wú)法運(yùn)行),請(qǐng)使用--nodeps 命令行選項(xiàng)。

          3 級(jí)RPM

          升級(jí)軟件包和安裝軟件包十分類似:

          $ rpm -Uvh foo-2.0-1.i386.rpm

          foo ####################################

          RPM將自動(dòng)卸載已安裝的老板本的foo 軟件包,您不會(huì)看到有關(guān)信息。事實(shí)上您可能總是使用 -U 來(lái)安裝軟件包,因?yàn)榧幢阋酝窗惭b過(guò)該軟件包,也能正常運(yùn)行。因?yàn)?/SPAN>RPM 執(zhí)行智能化的軟件包升級(jí),自動(dòng)處理配置文件,您將會(huì)看到如下信息:

          saving /etc/foo.conf as /etc/foo.conf.rpmsave

          這表示您對(duì)配置文件的修改不一定能向上兼容。 因此,RPM 會(huì)先備份老文件再安裝新文件。您應(yīng)當(dāng)盡快解決這兩個(gè)配置文件的不同之處,以使系統(tǒng)能持續(xù)正常運(yùn)行。

          因?yàn)樯?jí)實(shí)際包括軟件包的卸載與安裝兩個(gè)過(guò)程,所以您可能會(huì)碰到由這兩個(gè)操作引起的錯(cuò)誤。另一個(gè)你可能碰到的問(wèn)題是:當(dāng)您使用舊版本的軟件包來(lái)升級(jí)新版本的軟件時(shí),RPM會(huì)產(chǎn)生以下錯(cuò)誤信息:

          $ rpm -Uvh foo-1.0-1.i386.rpm

          foo package foo-2.0-1 which is newer is already installed

          error: foo-1.0-1.i386.rpm cannot be installed

          如果你確有需要將該軟件包“降級(jí)”,加入 --oldpackage 命令選項(xiàng)就可以了。

          4 查詢已安裝的軟件包

          使用命令rpm -q來(lái)查詢已安裝軟件包的數(shù)據(jù)庫(kù)。簡(jiǎn)單的使用命令 rpm -q foo 會(huì)打印出foo軟件包 的包名、版本號(hào)和發(fā)行號(hào):

          $ rpm -q foo

          foo-2.0-1

          除了指定軟件包名以外,您還可以使用以下選項(xiàng)來(lái)指明要查詢哪些軟件包的信息。這些選項(xiàng)被稱之為“軟件包指定選項(xiàng)”。

          l           -a 查詢所有已安裝的軟件包

          l           -f 將查詢包含有文件XXX的軟件包

          l           -p 查詢軟件包文件名為XXX的軟件包

          還可以指定查詢軟件包時(shí)所顯示的信息。它們被稱作信息選擇選項(xiàng):

          l           -i 顯示軟件包信息,如描述, 發(fā)行號(hào), 尺寸, 構(gòu)建日期, 安裝日期, 平臺(tái), 以及其它一些各類信息。

          l           -l 顯示軟件包中的文件列表。

          l           -s 顯示軟件包中所有文件的狀態(tài)。

          l           -d 顯示被標(biāo)注為文檔的文件列表(man 手冊(cè), info 手冊(cè), READMEs etc)。

          l           -c 顯示被標(biāo)注為配置文件的文件列表。這些是您要在安裝完畢以后加以定制的文件(sendmail.cfpasswd inittab, etc)。

          對(duì)于那些要顯示文件列表的文件,您可以增加-v命令行選項(xiàng)以獲得如同ls -l 格式的輸出。

          5 驗(yàn)證軟件包

          驗(yàn)證軟件包是通過(guò)比較已安裝的文件和軟件包中的原始文件信息來(lái)進(jìn)行的。驗(yàn)證主要是比較文件的尺寸、MD5 校驗(yàn)碼、文件權(quán)限、類型、屬主和用戶組等。

          rpm -V命令用來(lái)驗(yàn)證一個(gè)軟件包。您可以使用任何包選擇選項(xiàng)來(lái)查詢您要驗(yàn)證的軟件包。 命令rpm -V foo將用來(lái)驗(yàn)證foo軟件包。又如:

          l           驗(yàn)證包含特定文件的軟件包:

          rpm -Vf /bin/vi

          l           驗(yàn)證所有已安裝的軟件包:

          rpm -Va

          l           根據(jù)一個(gè)RPM包來(lái)驗(yàn)證:

          rpm -Vp foo-1.0-1.i386.rpm

          如果您擔(dān)心你的RPM數(shù)據(jù)庫(kù)已被破壞,就可以使用這種方式。

          如果一切均校驗(yàn)正常,將不會(huì)產(chǎn)生任何輸出。如果有不一致的地方,就會(huì)顯示出來(lái)。 輸出格式是8位長(zhǎng)字符串,c 用以指配置文件,接著是文件名。8位字符的每一個(gè)用以表示文件與RPM數(shù)據(jù)庫(kù)中一種屬性的比較結(jié)果 。“.(點(diǎn))”表示測(cè)試通過(guò)。

          下面的字符表示對(duì)RPM軟件包進(jìn)行的某種測(cè)試失?。?/SPAN>

          顯示字符錯(cuò)誤源

          l           5 MD5 校驗(yàn)碼

          l           S 文件尺寸

          l           L 符號(hào)連接

          l           T 文件修改日期

          l           D 設(shè)備

          l           U 用戶

          l           G 用戶組

          l           M 模式e (包括權(quán)限和文件類型)

          如果有錯(cuò)誤信息輸出,您應(yīng)當(dāng)認(rèn)真加以考慮,是通過(guò)刪除還是重新安裝來(lái)解決出現(xiàn)的問(wèn)題。

          6 教你一招

          RPM不僅是安裝/卸載程序的工具,它還是系統(tǒng)維護(hù)和診斷的一把好手。看過(guò)下面幾個(gè)例子你就會(huì)領(lǐng)教它的厲害了。

          l           如果您誤刪了一些文件,但您不能肯定到底都刪除了那些文件,怎么辦?您可以鍵入:

          rpm -Va

          rpm會(huì)在屏幕上顯示出文件刪除的情況。若你發(fā)現(xiàn)一些文件丟失了或已被損壞, 您就可以重新安裝或先卸載再安裝該軟件包。

          l           如果您碰到了一個(gè)自己不認(rèn)識(shí)的文件,要想查處它屬于哪個(gè)軟件包,您可以輸入以下命令

          rpm -qf /usr/X11R6/bin/xjewel

          輸出的結(jié)果會(huì)是:

          xjewel-1.6-1

          l           如果發(fā)生綜合以上兩個(gè)例子的情況,如文件/usr/bin/paste出了問(wèn)題。您想知道哪個(gè)軟件包中包含該文件,您這時(shí)可以簡(jiǎn)單的鍵入:

          rpm -Vf /usr/bin/paste

          l           如果您想了解正在使用的程序的詳細(xì)信息, 您可以鍵入如下命令來(lái)獲得軟件包中關(guān)于該程序的文檔信息:

          rpm -qdf /usr/bin/ispell

          輸出結(jié)果為:

          /usr/man/man4/ispell.4

          /usr/man/man4/english.4

          /usr/man/man1/unsq.1

          /usr/man/man1/tryaffix.1

          /usr/man/man1/sq.1

          /usr/man/man1/munchlist.1

          /usr/man/man1/ispell.1

          /usr/man/man1/findaffix.1

          /usr/man/man1/buildhash.1

          /usr/info/ispell.info.gz

          /usr/doc/ispell-3.1.18-1/README

          l           您發(fā)現(xiàn)了一個(gè)新的koules RPM,但您不知道它是做什么的,您可以鍵入如下命令

          rpm -qip koules-1.2-2.i386.rpm

          l           現(xiàn)在您想了解koulesRPM包在系統(tǒng)里安裝了哪些文件您可以鍵入

          rpm -qlp koules-1.2-2.i386.rpm

          輸出結(jié)果為

          /usr/man/man6/koules.6

          /usr/lib/games/kouleslib/start.raw

          /usr/lib/games/kouleslib/end.raw

          /usr/lib/games/kouleslib/destroy2.raw

          /usr/lib/games/kouleslib/destroy1.raw

          /usr/lib/games/kouleslib/creator2.raw

          /usr/lib/games/kouleslib/creator1.raw

          /usr/lib/games/kouleslib/colize.raw

          /usr/lib/games/kouleslib

          /usr/games/koules

          以上只是幾個(gè)常見(jiàn)例子。隨著您進(jìn)一步的使用RPM,您會(huì)發(fā)現(xiàn)它的各種功能選項(xiàng)組合可以實(shí)現(xiàn)更為強(qiáng)大的RPM包管理功能。

          posted on 2005-10-01 09:42 思考 閱讀(277) 評(píng)論(0)  編輯  收藏 所屬分類: Linux技術(shù)
          主站蜘蛛池模板: 田林县| 中卫市| 临江市| 磐石市| 新绛县| 铅山县| 塘沽区| 南丰县| 三台县| 波密县| 华坪县| 马公市| 时尚| 左贡县| 遵义县| 天全县| 颍上县| 潜山县| 花莲市| 伊金霍洛旗| 兴仁县| 安福县| 五大连池市| 布拖县| 绍兴县| 蓝田县| 大余县| 当雄县| 启东市| 平塘县| 临汾市| 莆田市| 绥阳县| 迁安市| 乐平市| 休宁县| 乐陵市| 临清市| 乐安县| 慈溪市| 大丰市|