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/。目錄RPMS/下面存放的就是一般的RPM軟件包, 這些軟件包是由軟件的原代碼編譯成可執行文件,再包裝成RPM軟件包的。而SRPMS/目錄下存放的都是以 .src.rpm結尾的文件,這些文件是由軟件的源代碼包裝而成的,用戶要安裝這類RPM軟件包,必須使用命令: # rpm --recompile vim-4.6-4.src.rpm 這個命令會把源代碼解包並編譯、安裝它,如果用戶使用命令: # rpm --rebuild vim-4.6-4.src.rpm 那麼,在安裝完成後,還會把編譯生成的可執行文件重新包裝成i386.rpm的RPM軟件包。 GnoRPM的使用 GnoRPM是GNU組織開發的RPM軟件包管理程序,它是RPM程序的前端程序,是在X Window下運行的圖形化的 RPM管理程序。只要用戶熟悉了RPM的使用,那麼也就會使用GnoRPM了,不過GnoRPM比RPM程序更好用! GnoRPM的安裝 BluePoint Linux和TurboLinux內沒有安裝GnoRPM,紅旗Linux與RedHat Linux內自動安裝的就有。 對於前兩種用戶要自己安裝。在http://www.gnome.org下載gnorpm-0.8-5.i386.rpm。注意GnoRPM需要 rpm 3.0版本,如果是rpm 2.5 版本的話(TurboLinux 4.0是rpm 2.5),要先升級到3.0,BluePiont Linux裡的rpm就是3.0版本,用戶可以直接安裝。 # rpm –ihv gnorpm-0.8-5.i386.rpm 然後,在shell提示符下輸入gnorpm 就能運行gnorpm。 GnoRPM的使用 gnorpm的主窗口如下所示,它有安裝、升級、刪除、查詢、驗證、尋找等功能。 安裝 點按“Install”後,出現安裝的窗口,如下圖示: 按“Add”,出現選擇窗口: 這時,選擇想要安裝的軟件包後,按“Add”按鈕,回到安裝的窗口,這時用戶可以選擇“Query”來查詢 這個軟件包,也可以選擇“Install”來安裝它。升級軟件同安裝軟件類似。 刪除軟件 gnorpm把系統上的軟件歸為幾個大類,如應用程序(Applications)、開發(Development)、文檔 (Documentation)等。用戶只要在相應類別中找到要刪除的軟件,然後再點按“Uninstall”按鈕, 針對彈出對話框: 如果用戶確認要刪除的話,按“OK”就可以了。 尋找 用戶在gnorpm主菜單上按“Find”後,會出現: 這時,只要選擇適當的尋找標准,gnorpm提供的標准有:“contain file”(包含文件),“are in the group ”(在類別……裡),“provide”(提供……功能),“require”(需要……),“conflict with” (同……沖突),“match label”(標簽為)。如上圖示,在選擇標准“match label”,並在用戶輸入信息 “gedit”後,按“Find”,它會開始尋找用戶需要的軟件,在找到之後,用戶可以查詢它,可以刪除它, 也可以驗證它。 當然,上面提到的僅僅是一丁點參考而已,用戶要在實際中不斷探索才能提高。 李景超