英文原義:Redhat Package Manager 中文釋義:RPM軟體包管理器。
雖然打上了RedHat的標誌,但是其原始設計理念是開放式的,現在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分發版本都有採用,可以算是公認的行業標準了。
RPM的常用參數還包括:
-vh:顯示安裝進度;
-U:升級軟體包;
-qpl:列出RPM軟體包內的檔案資訊;
-qpi:列出RPM軟體包的描述資訊;
-qf:尋找指定檔案屬於哪個RPM軟體包;
-Va:校正所有的RPM軟體包,尋找丟失的檔案;
1.什麼是rpm ?
rpm 即RedHat Package Management,是RedHat的發明之一
2.為什麼需要rpm ?
在一個作業系統下,需要安裝實現各種功能的軟體包。這些軟體包一般都有各自的程式,但是同時也有錯綜複雜的依賴關係。同時還需要 解決軟體包的版本,以及安裝,配置,卸載的自動化問題。為瞭解決 這些問題,RedHat針對自己的系統提出了一個較好的辦法來管理成千 上百的軟體。這就是RPM管理系統。在系統中安裝了rpm管理系統以後, 只要是符合rpm檔案標準的打包程式都可以方便地安裝、升級、卸載。
3.是不是所有的linux都使用rpm ?
任何系統都需要包管理系統,因此很多linux都使用rpm系統。 rpm系統是Redhat Linux和Fedora Core的軟體包管理器,但是Mandriva、SuSE等Linux發行版也都使用rpm。由於rpm的來源程式可以在別的系統上進行編譯,所以有可能在別的系統上也使用rpm。除了rpm,其他一些系統也有自己的軟體包管理程式, 例如 debian的deb包。
4.rpm包的檔案名稱為什麼那麼長 ?
rpm包的檔案名稱中包含了這個軟體包的版本資訊,作業系統資訊,硬體要求等等。比如mypackage-1.1-2RH.i386.rpm,其中mypackage是在系統中登記的軟體包的名字1.1是軟體的版本號碼,2是發行號,RH表示用於RH作業系統。i386表示用於intel x86平台。
5.軟體包檔案名稱中的i386,i686是什麼意思
rpm軟體包的檔案名稱中,不僅包含了軟體名稱,版本資訊,還包括了適用的硬體架構的資訊。 i386指這個軟體包適用於intel 80386以上的x86架構的電腦(AI32) i686指這個軟體包適用於intel 80686以上(奔騰pro以上)的x86架構的電腦(IA32) noarch指這個軟體包與硬體架構無關,可以通用。 i686軟體包通常針對CPU進行了最佳化,現在通常配置的機器都可以使用i686軟體包。
6.不同作業系統發行的rpm包可否混用?
對於已經編譯成二進位的rpm包,由於作業系統環境不同,一般不能混用。 對於以src.rpm發行的軟體包,由於需要安裝時進行本地編譯,所以通常可以在不同系統下安裝。
二、RPM包管理的用途
1、可以安裝、刪除、升級和管理以rpm包形式發布的軟體;2、可以查詢某個rpm包中包含哪些檔案,以及某個指定檔案屬於哪個rpm包;3、可以在查詢系統中的某個rpm包是否已安裝以及其版本;4、作為開發人員可以把自己開發的軟體打成rpm包發布;5、依賴性的檢查,查詢安裝某個rpm包時,需要哪些其它的rpm包。 註:RPM軟體的安裝、刪除、更新只有root許可權才能使用; 對於查詢功能任何使用者都可以操作。
三、rpm 的一點簡單用法
rpm的一般格式:
rpm [選項] [rpm軟體包]
1、初始化rpm 資料庫(可以省略)
rpm --initdbrpm --rebuilddb % 註:這個要花好長時間%註:有時rpm 系統出了問題,不能安裝和查詢,大多是這裡出了問題。
2、RPM軟體包管理的查詢功能:
rpm -q [select-options] [query-options]
RPM的查詢功能是極為強大,是極為重要的功能之一;這裡舉幾個常用的例子,更為詳細的具體的,請參考 man rpm
對系統中已安裝軟體的查詢
1)查詢系統已安裝的軟體文法:rpm -q 軟體名例:rpm -q mplayer% -q就是 --query,此選項表示詢問系統是不是安裝了gaim軟體包;% 如果已安裝會有資訊輸出;如果沒有安裝,會輸出gaim 沒有安裝的資訊;%查看系統中所有已經安裝的包,要加 -a 參數rpm -qa% 如果分頁查看,再加一個管道 |和more命令rpm -qa |more% 如果要尋找某個軟體包,可以用 grep 抽取出來rpm -qa |grep mplayer
2)查詢一個已經安裝的檔案屬於哪個軟體包;文法: rpm -qf 檔案名稱註:檔案名稱所在的絕對路徑要指出例:rpm -qf /usr/lib/libacl.la
3)查詢已安裝軟體包都安裝到何處;文法:rpm -ql 軟體包名 例:rpm -ql mplayer
4)查詢一個已安裝軟體包的資訊 文法: rpm -qi 軟體包名例:rpm -qi mplayer
5)查看一下已安裝軟體的設定檔;文法格式:rpm -qc 軟體名例:rpm -qc mplayer
6)查看一個已經安裝軟體的文檔安裝位置:文法格式: rpm -qd 軟體名例:rpm -qd mplayer
7)查看一下已安裝軟體所依賴的軟體包及檔案;文法格式: rpm -qR 軟體名例:rpm -qR mplayer注:可以把幾個參數組合起來用,如 rpm -qil mplayer
對於未安裝的軟體包的查看 :查看的前提是目前的目錄下已存在一個.rpm檔案。
1)查看一個軟體包的用途、版本等資訊;文法: rpm -qpi file.rpm例:rpm -qpi mplayer-1.0pre7try2-2.i386.rpm
2)查看一件軟體包所包含的檔案;文法: rpm -qpl file.rpm例:rpm -qpl mplayer-1.0pre7try2-2.i386.rpm
3)查看軟體包的文檔所在的位置;文法: rpm -qpd file.rpm例:rpm -qpd mplayer-1.0pre7try2-2.i386.rpm
4)查看一個軟體包的設定檔;文法: rpm -qpc file.rpm例:rpm -qpc mplayer-1.0pre7try2-2.i386.rpm
5)查看一個軟體包的依賴關係文法: rpm -qpR file.rpm例:rpm -qpR mplayer-1.0pre7try2-2.i386.rpm
3、軟體包的安裝、升級、刪除等; 安裝和升級一個rpm 包
文法: rpm -ivh file.rpm % 這個是用來安裝一個新的rpm 包 rpm -Uvh file.rpm % 這是用來升級一個rpm 包% 如果有依賴關係的,需解決依賴關係。% 如果找不到依賴關係的包,可以用下面的命令強制安裝: rpm -ivh --nodeps --force file.rpm rpm -Uvh --nodeps --force file.rpm例:rpm -ivh --test mplayer-1.0pre7try2-2.i386.rpm% --test表示測試,並不真正安裝。rpm -ivh --relocate /=/usr/local/mplayer mplayer-1.0pre7try2-2.i386.rpm% 為軟體包指定安裝目錄:要加 --relocate 參數% 安裝在指定目錄中的程式如何調用呢?% 通常可執行程式都放在安裝目錄下的bin或者sbin目錄中。
刪除一個rpm 包
首先查出需要刪除的rpm包,然後用下面的命令來卸載:rpm -e 軟體包名 例:rpm -e mplayer % 卸載mplayer% 如果有其它的rpm依賴於該rpm包,系統會出現警告。% 如果一定要卸載,可以用選項 --nodeps 忽略依賴關係。但最好不要這麼做。
四、RPM管理組件管理器支援網路安裝和查詢
rpm [選項] rpm包的http或者ftp的地址比如我們想通過 Fedora Core 4.0 的一個鏡像查詢、安裝軟體包。rpm -qpi http://mirrors.kernel.org/.../RPMS/rsh-0.17-29.rpm% 查詢rpm -ivh http://mirrors.kernel.org/.../RPMS/rsh-0.17-29.rpm% 安裝
五、對已安裝rpm包查詢的一點補充
可以用 locate來查詢一些軟體的安裝位置,可能需要先運行updatedb來更新已安裝軟體庫
六、從rpm軟體包抽取檔案
rpm2cpio xxx.rpm | cpio -idmv% i 表示提取檔案,v 表示指示執行進程% d 表示根據包中檔案原來的路徑建立目錄 % m 表示保持檔案的更新時間