Linux下RPM 命令用法中文簡介

zk1878發表於2011-04-01

原文地址:http://bbs.51cto.com/topic/thread-700076.html

1.什麼是rpm ?

     rpm 即RedHat Package Management,是RedHat的發明之一
2.為什麼需要rpm ?

 

    在一個作業系統下,需要安裝實現各種功能的軟體包。這些軟體包一般都有各自的程式,

但是同時也有錯綜複雜的依賴關係。同時還需要 解決軟體包的版本,以及安裝,配置,

解除安裝的自動化問題。為了解決 這些問題,RedHat針對自己的系統提出了一個較好的辦法

來管理成千 上百的軟體。這就是RPM管理系統。在系統中安裝了rpm管理系統以後,

只要是符合rpm檔案標準的打包程式都可以方便地安裝、升級、解除安裝。

[align=left]3.是不是所有的linux都使用rpm ? [/align]任何系統都需要包管理系統,因此很多[url=http://jiaogen.com/] [color=black]linux[/color][/url]都使用rpm系統。 rpm系統是Redhat Linux和

Fedora Core的軟體包管理器,但是Mandriva、SuSE等Linux發行版也都使用rpm。由於rpm

的源程式可以在別的系統上進行編譯,所以有可能在別的系統上也使用rpm。除了rpm,

其他一些系統也有自己的軟體包管理程式, 例如 debian的deb包。

[align=left]4.rpm包的檔名為什麼那麼長 ? [/align]rpm包的檔名中包含了這個軟體包的版本資訊,作業系統資訊,硬體要求等等。

比如mypackage-1.1-2RH.i386.rpm,其中mypackage是在系統中登記的軟體包的名字1.1

是軟體的版本號,2是發行號,RH表示用於RH作業系統。i386表示用於intel x86平臺。

[align=left]5.軟體包檔名中的i386,i686是什麼意思 [/align]rpm軟體包的檔名中,不僅包含了軟體名稱,版本資訊,還包括了適用的硬體架構的資訊。



i386指這個軟體包適用於intel 80386以上的x86架構的計算機(AI32)

i686指這個軟體包適用於intel 80686以上(奔騰pro以上)的x86架構的計算機(IA32)

noarch指這個軟體包與硬體架構無關,可以通用。



i686軟體包通常針對CPU進行了優化,現在通常配置的機器都可以使用i686軟體包。

[align=left]6.不同作業系統發行的rpm包可否混用? [/align]對於已經編譯成二進位制的rpm包,由於作業系統環境不同,一般不能混用。

對於以src.rpm發行的軟體包,由於需要安裝時進行本地編譯,所以通常可以在不同系統下安裝。

[b]二、RPM包管理的用途[/b]

1、可以安裝、刪除、升級和管理以rpm包形式釋出的軟體;

2、可以查詢某個rpm包中包含哪些檔案,以及某個指定檔案屬於哪個rpm包;

3、可以在查詢系統中的某個rpm包是否已安裝以及其版本;

4、作為開發者可以把自己開發的軟體打成rpm包釋出;

5、依賴性的檢查,查詢安裝某個rpm包時,需要哪些其它的rpm包。



注:RPM軟體的安裝、刪除、更新只有root許可權才能使用;

對於查詢功能任何使用者都可以操作。

[b]三、rpm 的一點簡單用法 [/b]

[align=left]rpm的一般格式: [/align] rpm [選項] [rpm軟體包]

[align=left]1、初始化rpm 資料庫(可以省略) [/align]rpm --initdb

rpm --rebuilddb % 注:這個要花好長時間



%注:有時rpm 系統出了問題,不能安裝和查詢,大多是這裡出了問題。

[align=left]2、RPM軟體包管理的查詢功能: [/align]rpm -q [select-options] [query-options]

[align=left]RPM的查詢功能是極為強大,是極為重要的功能之一;這裡舉幾個常用的例子,更為詳細的具體的,請參考 man rpm [/align][align=left][i]對系統中已安裝軟體的查詢[/i] [/align]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



[b]注[/b]:可以把幾個引數組合起來用,如 rpm -qil mplayer

[align=left][i]對於未安裝的軟體包的檢視[/i] :檢視的前提是當前目錄下已存在一個.rpm檔案。 [/align]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

[align=left]3、軟體包的安裝、升級、刪除等; [i]安裝和升級一個rpm 包[/i] [/align]語法:

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目錄中。

[align=left][i]刪除一個rpm 包[/i] [/align]首先查出需要刪除的rpm包,然後用下面的命令來解除安裝:



rpm -e 軟體包名



例:rpm -e mplayer % 解除安裝mplayer

% 如果有其它的rpm依賴於該rpm包,系統會出現警告。

% 如果一定要解除安裝,可以用選項 --nodeps 忽略依賴關係。但最好不要這麼做。

[b]四、RPM管理包管理器支援網路安裝和查詢[/b]

rpm [選項] rpm包的http或者ftp的地址



比如我們想通過 Fedora Core 4.0 的一個映象查詢、安裝軟體包。



rpm -qpi [url]http://mirrors.kernel.org/.../RPMS/rsh-0.17-29.rpm[/url]

% 查詢



rpm -ivh [url]http://mirrors.kernel.org/.../RPMS/rsh-0.17-29.rpm[/url]

% 安裝

[b]五、對已安裝[url=http://linuxrpminstall.jiaogen.com/][color=black]linux rpm[/color][/url]包查詢的一點補充[/b]

可以用 locate來查詢一些軟體的安裝位置,可能需要先執行updatedb來更新已安裝軟體庫

[b]六、從rpm軟體包抽取檔案[/b]

rpm2cpio xxx.rpm | cpio -idmv

% i 表示提取檔案,v 表示指示執行程式

% d 表示根據包中檔案原來的路徑建立目錄

% m 表示保持檔案的更新時間

相關文章