qiyadeng

          專注于Java示例及教程
          posts - 84, comments - 152, trackbacks - 0, articles - 34

          rpm命令

          Posted on 2006-02-15 09:46 qiyadeng 閱讀(618) 評論(0)  編輯  收藏 所屬分類: Linux
          :D 一、 安裝RPM包

          RPM軟件包通常具有類似foo-1.0-1.i386.rpm的文件名。其中包括軟件包的名稱(foo),版本號(1.0),發行號(1),和硬件平臺(i386)。安裝一個軟件包只需簡單的鍵入以下命令:

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

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

          RPM安裝完畢后會打印出軟件包的名字(并不一定與文件名相同),而后打印一連串的#號以表示安裝進度。雖然軟件包的安裝被設計的盡量簡單易行, 但還是可能會發生如下的錯誤:
          1、 軟件包已被安裝
          foo package foo-1.0-1 is already installed
          error: foo-1.0-1.i386.rpm cannot be installed

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

          2、文件沖突 如果您要安裝的軟件包中有一個文件已在安裝其它軟件包時安裝,會出現以下錯誤信息:
          foo /usr/bin/foo conflicts with file from bar-1.0-1

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

          要想讓RPM 忽略該錯誤信息, 請使用--replacefiles 命令行選項。

          3、未解決依賴關系

          RPM軟件包可能依賴于其它軟件包,也就是說要求在安裝了特定的軟件包之后才能安裝該軟件包。

          如果在您安裝某個軟件包時存在這種未解決的依賴關系。會產生以下信息:
          failed dependencies: foo is needed by bar-1.0-1

          您必須安裝完所依賴的軟件包,才能解決這個問題。如果您想強制安裝(這是個壞主意,因為安裝后的軟件包未必能正常運行), 請使用--nodeps 命令行選項。

          二、卸載RPM包

          卸載軟件包就象安裝軟件包時一樣簡單:

          $ rpm -e foo

          注意這里使用軟件包的名字name``foo,而不是軟件包文件的名字file``foo-1.0-1.i386.rpm。

          如果其它軟件包依賴于您要卸載的軟件包,卸載時則會產生錯誤信息。如:

          $ rpm -e foo

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

          若讓RPM忽略這個錯誤繼續卸載(這可不是一個好主意,因為依賴于該軟件包的程序可能無法運行),請使用--nodeps 命令行選項。

          三、升級RPM包

          升級軟件包和安裝軟件包十分類似:.

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

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

          RPM將自動卸載已安裝的老板本的foo 軟件包,您不會看到有關信息。事實上您可能總是使用 -U來安裝軟件包,因為即便以往未安裝過該軟件包,也能正常運行。因為RPM執行智能化的軟件包升級,自動處理配置文件,您將會看到如下信息:

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

          這表示您對配置文件的修改不一定能向上兼容。因此,RPM會先備份老文件再安裝新文件。您應當盡快解決這兩個配置文件的不同之處,以使系統能持續正常運行。

          因為升級實際包括軟件包的卸載與安裝兩個過程,所以您可能會碰到由這兩個操作引起的錯誤。另一個你可能碰到的問題是:當您使用舊版本的軟件包來升級新版本的軟件時,RPM會產生以下錯誤信息:

          $ 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

          如果你確有需要將該軟件包”降級,加入 --oldpackage 命令選項就可以了。

          四、 查詢已安裝的軟件包

          使用命令rpm -q來查詢已安裝軟件包的數據庫。簡單的使用命令rpm -q foo會打印出foo軟件包的包名,版本號,和發行號:

          $ rpm -q foo

          foo-2.0-1

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

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

          · -f 將查詢包含有文件. 的軟件包

          · -p 查詢軟件包文件名為的軟件包

          還可以指定查詢軟件包時所顯示的信息。它們被稱作信息選擇選項:

          ·-i顯示軟件包信息,如描述,發行號,尺寸,構建日期,安裝日期,平臺,以及其它一些各類信息。

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

          · -s 顯示軟件包中所有文件的狀態。

          · -d 顯示被標注為文檔的文件列表(man 手冊, info 手冊, READMEs, etc)。

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

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

          五、 驗證軟件包

          驗證軟件包是通過比較已安裝的文件和軟件包中的原始文件信息來進行的。驗證主要是比較文件的尺寸, MD5 校驗碼, 文件權限, 類型, 屬主和用戶組等。

          rpm-V命令用來驗證一個軟件包。您可以使用任何包選擇選項來查詢您要驗證的軟件包。 命令rpm -V foo 將用來驗證foo軟件包。又如:

          · 驗證包含特定文件的軟件包:

          rpm -Vf /bin/vi

          · 驗證所有已安裝的軟件包:

          rpm -Va

          · 根據一個RPM包來驗證:

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

          如果您擔心你的RPM數據庫已被破壞,就可以使用這種方式。

          如果一切均校驗正常將不會產生任何輸出。如果有不一致的地方,就會顯示出來。輸出格式是8位長字符串,``c用以指配置文件,接著是文件名.8位字符的每 一個用以表示文件與RPM數據庫中一種屬性的比較結果。``.(點)表示測試通過。.下面的字符表示對RPM軟件包進行的某種測試失敗:

          顯示字符 錯誤源

          5 MD5 校驗碼

          S 文件尺寸

          L 符號連接

          T 文件修改日期

          D 設備

          U 用戶

          G 用戶組

          M 模式e (包括權限和文件類型)

          如果有錯誤信息輸出, 您應當認真加以考慮,是通過刪除還是重新安裝來解決出現的問題。

          六、教你一招

          RPM不僅是安裝/卸載程序的工具,它還是系統維護和診斷的一把好手。看過下面幾個例子你就會領教它的厲害了。

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

          rpm -Va

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

          · 如果您碰到了一個自己不認識的文件,要想查處它屬于哪個軟件包,您可以輸入以下命令

          rpm -qf /usr/X11R6/bin/xjewel

          輸出的結果會是:

          xjewel-1.6-1

          ·如果發生綜合以上兩個例子的情況,如文件/usr/bin/paste出了問題。您想知道哪個軟件包中包含該文件,您這時可以簡單的鍵入:

          rpm -Vf /usr/bin/paste

          ·如果您想了解正在使用的程序的詳細信息,您可以鍵入如下命令來獲得軟件包中關于該程序的文檔信息:

          rpm -qdf /usr/bin/ispell

          輸出結果為:

          /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

          · 您發現了一個新的koules RPM,但您不知道它是做什么的,您可以鍵入如下命令:

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

          · 現在您想了解koules的 RPM包在系統里安裝了哪些文件, 您可以鍵入:

          rpm -qlp koules-1.2-2.i386.rpm輸出結果為:

          /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

          主站蜘蛛池模板: 武乡县| 清远市| 久治县| 古丈县| 通化市| 河北省| 开鲁县| 四平市| 维西| 遂宁市| 大埔县| 乐昌市| 南澳县| 朝阳县| 紫阳县| 沾益县| 南靖县| 亚东县| 浦江县| 勐海县| 苏尼特左旗| 沛县| 涪陵区| 温泉县| 朔州市| 嘉定区| 安顺市| 拉萨市| 务川| 灵台县| 深州市| 萝北县| 宁武县| 通州市| 阳泉市| 琼中| 福贡县| 丹阳市| 盈江县| 福海县| 鹰潭市|