萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> RPM 的使用

RPM 的使用

class="21896"> RPM簡述

RPM是Redhat Package Manager的縮寫,是由RedHat公司開發的軟件包安裝和管理程序,同Windows平台上
的Uninstaller比較類似。使用RPM,用戶可以自行安裝和管理Linux上的應用程序和系統工具。

RPM可以讓用戶直接以binary方式安裝軟件包,並且可替用戶查詢是否已經安裝了有關的庫文件;在用RPM刪
除程序時,它又會聰明地詢問用戶是否要刪除有關的程序。如果使用RPM來升級軟件,RPM會保留原先的配置
文件,這樣用戶就不用重新配置新的軟件了。RPM保留一個數據庫,這個數據庫中包含了所有的軟件包的資料,
通過這個數據庫,用戶可以進行軟件包的查詢。RPM雖然是為Linux而設計的,但是它已經移值到SunOS、
Solaris、AIX、Irix等其它UNIX系統上了。RPM遵循GPL版權協議,用戶可以在符合GPL協議的條件下自由
使用及傳播RPM。


使用RPM

RPM共有10種基本的模式:它們是安裝、查詢、驗證、刪除等。

安裝模式:      rpm –i [安裝選項]  <軟件包>
查詢模式:      rpm –q [查詢選項]
驗證模式:      rpm –V 或 –verify [驗證選項]
刪除模式:      rpm –e  <軟件包>
 

使用RPM的一般選項
一般選項可以用於所有的模式。
-v                 顯示信息
-h                 用“#”顯示完成的進度
--keep-temps        保留臨時文件,臨時文件通常位於/tmp/rpm-*,這個選項要用於debug。
--quiet             安靜工作,只有當出現錯誤時才給出提示信息
--help              顯示幫助
--version            顯示當前使用的RPM版本

安裝和升級的選項
使用RPM來安裝的一般格式為:     rpm –i  [安裝選項] <軟件包>
使用RPM來升級的一般格式為:     rpm –U  [安裝選項] <軟件包>

比如,要安裝一個新的軟件包,它的名字為xosvies-1.6.3-5.i386.rpm,使用下面的命令就可以把它安裝到系統上:
# rpm  -i xosvies-1.6.3-5.i386.rpm

升級同安裝是一樣的,只不過升級會把原來低版本的文件刪除掉。RPM可以使用FTP安裝,這時要指定FTP的完整
路徑。使用FTP方式安裝時,RPM會先下載所需的軟件包,然後再安裝。

--force
同--replacepkgs,--replacefiles,--oldpackage一樣,當安裝的軟件版本已經安裝在系統上,或者是系統
上現有的版本比要安裝的版本高,系統就會發出警告。這時,用戶如果堅持安裝的話,可以用--force選項。

--nodeps
使用RPM安裝前,RPM會檢查該軟件包的依賴關系,即正確運行該軟件包所需的其它軟件包是否已經安裝。如果沒有
安裝的話,系統會給出警告。這時,用戶如果要強行安裝的話,可以使用這個選項。但是作者並不推薦這種做法,
因為這樣安裝的軟件十有八九是不能運行的。

--test
不實際安裝,只是檢查並顯示可能存在的沖突。

查詢選項

查詢的命令格式如下:  rpm –q  [查詢選項]

這裡的選項包括兩大類:軟件包選項和信息選項。

軟件包選項:

<軟件包名字>

查詢系統上是否已經安裝這個軟件包,軟件包的名字是<軟件包名字>

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

        --whatrequires  <功能>

           查詢所有需要<功能>才能正常運行的軟件包。

        --whatprovides <功能>

         查詢所有能提供<功能>的軟件包

        -f <文件>

         查詢擁有<文件>的軟件包,也就是說,是哪一個軟件包安裝的<文件>。

        --requiredby <軟件包>

         查詢所有安裝<軟件包>所需要的其它軟件包。

         -p <軟件包名字>

         查詢未安裝的軟件包<軟件包名字>。這個軟件包可以指定為FTP路徑,這時,RPM會下載它的頭部信息並查詢。

信息選項
-i  顯示軟件包的信息,包括名稱、版本、描述信息。
-R  顯示這個軟件包所依賴的軟件包。 同--requires。
--provides  顯示這個軟件包所提供的功能
-l  列出這個軟件包內所包含的文件。
-s  顯示這個軟件包的狀態,狀態是指“normal”“not installed”“replaced”

驗證選項
驗證的一般格式為:   rpm –V|--verify [驗證選項]
驗證會把軟件包所安裝的軟件與原先數據庫中存儲的軟件信息做一個比較。用戶可以用RPM來驗證已經安裝的軟件包,
RPM可以驗證文件的大小,MD5校驗碼,文件權限,類型,屬主等信息。對於特定軟件的選項同查詢的選項。

驗證輸出的格式是一個包括8個字符的字符串,這8個字符中每個字符都代表同數據庫中信息所比較的結果。如是結果
是“.”,就代表沒有問題。下面是相應字符的意義:

5           MD5校驗錯          D             設備文件錯
U          用戶名錯             G              組名錯
S          文件大小錯            L              符號鏈接錯
T          文件修改時間錯        M             屬性錯(包括讀寫權限和文件類型)

刪除選項
刪除的一般格式為:  rpm –e  <軟件名>
注意:這裡只能是軟件名,而不是軟件包。

--allmatches
刪除<軟件包>所指定的所有版本的軟件,如果有多個版本存在的話,一般會給出錯誤碼信息。

--nodeps
如果要刪除的軟件包是別的軟件所必需的,在刪除時用戶會得到警告。這時,如果確認要強行刪除,可以使用
--nodeps這個選項。這樣一來,相關的軟件就不能運行了。

--test   不真正刪除,只是測試。

 

RPM使用范例

軟件安裝

如果用戶手頭上有一個RPM軟件包,可以使用命令:

# rpm –ivh xanim-27064-3.i386.rpm

安裝時出現的錯誤信息

1.該軟件包已經安裝

假如用戶安裝的軟件包已經安裝,再安裝的話會出現下列的錯誤信息:
# rpm –ivh   xanim-27064-3.i386.rpm

foo package xanim-27064-3.i386.rpm is already installed

error: xanim-27064-3.i386.rpm cannot be installed

如果用戶一定要安裝,可以使用:
# rpm –ivh   xanim-27064-3.i386.rpm  --force

2.軟件包之間有沖突

假如用戶要安裝的軟件包裡的某些文件,先前已經有其它的軟件包安裝過,即各種軟件包之間有沖突,則會
出現以下的錯誤信息:
# rpm –ihv foo-1.0-1.i386.rpm

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

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

3.缺少相關的文件

有時安裝的RPM軟件包需要其它的部件才能安裝成功。這時安裝時有下面的錯誤信息:
# rpm –ihv bar-1.0-1.i386.rpm

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

如果用戶要強行安裝,可以使用命令:
# rpm –ivh bar-1.0-1.i386.rpm --nodeps

刪除軟件

要刪除軟件非常簡單,只要執行下面的命令就行:
# rpm –e xanim

這時,用戶要注意使用的是軟件的名稱xanim,而不是軟件包的名稱xanim-27.64-3.i386.rpm。

如果要刪除的軟件是其它軟件所需要的,用戶會得到類似下面的錯誤信息:
# rpm –e xanim

error: xanim is needed by mtv-1.0-1

這表明如果用戶刪除了xanim,則mtv就不能運行了,因為xanim裡的一些軟件是mtv運行所需要的。
若用戶一定要刪除,可以使用下面的命令:
# rpm –e xanim  --nodeps

升級軟件

如果用戶以前安裝過xanim-27063-1.i386.rpm,現在又得到了xanim-27064-1.i386.rpm,則使用下面
的命令可以升級這個軟件包:
# rpm –Uhv  xanim-27064-1.i386.rpm

實際上,-U參數是告訴RPM先刪除原先的版本,再安裝新的版本。所以不管以前是否安裝過這個軟件包,用戶
都可以使用rpm –Uhv命令來安裝軟件。 

查詢軟件包

如果用戶想要查詢某個軟件是屬於哪個軟件包安裝的,可以使用命令:
# rpm –qf xanim

xanim-27.64-3

如果用戶得到一個軟件包,卻不知道它裡面有哪些內容,可以使用命令:
# rpm –qpi xanim-27064-3.i386.rpm

如果用戶想知道它會在系統上安裝哪些內容,可以使用命令:
# rpm –qpl xanim-27064-3.i386.rpm

如果用戶在Internet上遇到一個軟件包,想要知道它裡邊的內容時,可以使用命令:
# rpm –qpl ftp://ftp.redhat.com/redhat/RPMS/xanim-27064-3.i386.rom

 

較驗

如果用戶不小心刪除了幾個文件,卻又不知道到底刪除了哪些文件,可以使用下面的命令對系統進行校驗:
# rpm –Va

 

i386.rpm與src.rpm的不同

在Internet上,用戶經常會看到這樣的目錄:RPMS/和SRPMS/
copyright © 萬盛學電腦網 all rights reserved