1. 程式人生 > >rpm 命令|rpm 安裝|rpm 解除安裝|rpm 使用|rpm 刪除

rpm 命令|rpm 安裝|rpm 解除安裝|rpm 使用|rpm 刪除

在Linux作業系統中,有一個系統軟體包,它的功能類似於Windows裡面的“新增/刪除程式”,但是功能又比“新增/刪除程式”強很多,它就是Red Hat Package Manager(簡稱RPM)。此工具包最先是由Red Hat公司推出的,後來被其他Linux開發商所借用。由於它為Linux使用者省去了很多時間,所以被廣泛應用於在Linux下安裝、刪除軟體。下面就給大家介紹一下它的具體使用方法。 

rpm命令是RPM軟體包的管理工具。rpm原本是Red Hat Linux發行版專門用來管理Linux各項套件的程式,由於它遵循GPL規則且功能強大方便,因而廣受歡迎。逐漸受到其他發行版的採用。RPM套件管理方式的出現,讓Linux易於安裝,升級,間接提升了Linux的適用度。

語法  

rpm(選項)(引數)

選項  

-a:查詢所有套件;
-b<完成階段><套件檔>+或-t <完成階段><套件檔>+:設定包裝套件的完成階段,並指定套件檔的檔名稱;
-c:只列出組態配置檔案,本引數需配合"-l"引數使用;
-d:只列出文字檔案,本引數需配合"-l"引數使用;
-e<套件檔>或--erase<套件檔>:刪除指定的套件;
-f<檔案>+:查詢擁有指定檔案的套件;
-h或--hash:套件安裝時列出標記;
-i:顯示套件的相關資訊;
-i<套件檔>或--install<套件檔>:安裝指定的套件檔;
-l:顯示套件的檔案列表;
-p<套件檔>+:查詢指定的RPM套件檔;
-q:使用詢問模式,當遇到任何問題時,rpm指令會先詢問使用者;
-R:顯示套件的關聯性資訊;
-s:顯示檔案狀態,本引數需配合"-l"引數使用;
-U<套件檔>或--upgrade<套件檔>:升級指定的套件檔;
-v:顯示指令執行過程;
-vv:詳細顯示指令執行過程,便於排錯。

引數  

軟體包:指定要操縱的rpm軟體包。

例項  

如何安裝rpm軟體包

rpm軟體包的安裝可以使用程式rpm來完成。執行下面的命令:

rpm -ivh your-package.rpm

其中your-package.rpm是你要安裝的rpm包的檔名,一般置於當前目錄下。

安裝過程中可能出現下面的警告或者提示:

... conflict with ...

可能是要安裝的包裡有一些檔案可能會覆蓋現有的檔案,預設時這樣的情況下是無法正確安裝的可以用rpm --force -i強制安裝即可

... is needed by ...
... is not installed ...

此包需要的一些軟體你沒有安裝可以用rpm --nodeps -i來忽略此資訊,也就是說rpm -i --force --nodeps可以忽略所有依賴關係和檔案問題,什麼包都能安裝上,但這種強制安裝的軟體包不能保證完全發揮功能。

如何安裝.src.rpm軟體包

有些軟體包是以.src.rpm結尾的,這類軟體包是包含了原始碼的rpm包,在安裝時需要進行編譯。這類軟體包有兩種安裝方法:

方法一:

rpm -i your-package.src.rpm
cd /usr/src/redhat/SPECS
rpmbuild -bp your-package.specs             #一個和你的軟體包同名的specs檔案
cd /usr/src/redhat/BUILD/your-package/      #一個和你的軟體包同名的目錄
./configure                                 #這一步和編譯普通的原始碼軟體一樣,可以加上引數
make
make install

方法二:

rpm -i you-package.src.rpm
cd /usr/src/redhat/SPECS

前兩步和方法一相同

rpmbuild -bb your-package.specs       #一個和你的軟體包同名的specs檔案

這時在/usr/src/redhat/RPM/i386/(根據具體包的不同,也可能是i686,noarch等等)在這個目錄下,有一個新的rpm包,這個是編譯好的二進位制檔案。

執行rpm -i new-package.rpm即可安裝完成。

如何解除安裝rpm軟體包

使用命令rpm -e包名,包名可以包含版本號等資訊,但是不可以有後綴.rpm,比如解除安裝軟體包proftpd-1.2.8-1,可以使用下列格式:

rpm -e proftpd-1.2.8-1
rpm -e proftpd-1.2.8
rpm -e proftpd-
rpm -e proftpd

不可以是下列格式:

rpm -e proftpd-1.2.8-1.i386.rpm
rpm -e proftpd-1.2.8-1.i386
rpm -e proftpd-1.2
rpm -e proftpd-1

有時會出現一些錯誤或者警告:

... is needed by ...

這說明這個軟體被其他軟體需要,不能隨便解除安裝,可以用rpm -e --nodeps強制解除安裝

如何不安裝但是獲取rpm包中的檔案

使用工具rpm2cpio和cpio

rpm2cpio xxx.rpm | cpio -vi
rpm2cpio xxx.rpm | cpio -idmv
rpm2cpio xxx.rpm | cpio --extract --make-directories

引數i和extract相同,表示提取檔案。v表示指示執行程序,d和make-directory相同,表示根據包中檔案原來的路徑建立目錄,m表示保持檔案的更新時間。

如何檢視與rpm包相關的檔案和其他資訊

下面所有的例子都假設使用軟體包mysql-3.23.54a-11

1、我的系統中安裝了那些rpm軟體包。

rpm -qa 講列出所有安裝過的包

如果要查詢所有安裝過的包含某個字串sql的軟體包

rpm -qa | grep sql

2、如何獲得某個軟體包的檔案全名。

rpm -q mysql

可以獲得系統中安裝的mysql軟體包全名,從中可以獲得當前軟體包的版本等資訊。這個例子中可以得到資訊mysql-3.23.54a-11

3、一個rpm包中的檔案安裝到那裡去了?

rpm -ql 包名

注意這裡的是不包括.rpm字尾的軟體包的名稱,也就是說只能用mysql或者mysql-3.23.54a-11而不是mysql-3.23.54a-11.rpm。如果只是想知道可執行程式放到那裡去了,也可以用which,比如:

which mysql

4、一個rpm包中包含那些檔案。

  • 一個沒有安裝過的軟體包,使用rpm -qlp ****.rpm
  • 一個已經安裝過的軟體包,還可以使用rpm -ql ****.rpm

5、如何獲取關於一個軟體包的版本,用途等相關資訊?

  • 一個沒有安裝過的軟體包,使用rpm -qip ****.rpm
  • 一個已經安裝過的軟體包,還可以使用rpm -qi ****.rpm

6、某個程式是哪個軟體包安裝的,或者哪個軟體包包含這個程式。

rpm -qf `which 程式名`    #返回軟體包的全名
rpm -qif `which 程式名`   #返回軟體包的有關資訊
rpm -qlf `which 程式名`   #返回軟體包的檔案列表

注意,這裡不是引號,而是`,就是鍵盤左上角的那個鍵。也可以使用rpm -qilf,同時輸出軟體包資訊和檔案列表。

7、某個檔案是哪個軟體包安裝的,或者哪個軟體包包含這個檔案。

注意,前一個問題中的方法,只適用與可執行的程式,而下面的方法,不僅可以用於可執行程式,也可以用於普通的任何檔案。前提是知道這個檔名。首先獲得這個程式的完整路徑,可以用whereis或者which,然後使用rpm -qf例如:

whereis ftptop
ftptop: /usr/bin/ftptop /usr/share/man/man1/ftptop.1.gz

rpm -qf /usr/bin/ftptop
proftpd-1.2.8-1

rpm -qf /usr/share/doc/proftpd-1.2.8/rfc/rfc0959.txt
proftpd-1.2.8-1

  1.我們得到一個新軟體,在安裝之前,一般都要先檢視一下這個軟體包裡有什麼內容,假設這個檔案是:Linux-1.4-6.i368.rpm,我們可以用這條命令檢視:     rpm -qpi Linux-1.4-6.i368.rpm     系統將會列出這個軟體包的詳細資料,包括含有多少個檔案、各檔名稱、檔案大小、建立時間、編譯日期等資訊。     2.上面列出的所有檔案在安裝時不一定全部安裝,就像Windows下程式的安裝方式分為典型、完全、自定義一樣,Linux也會讓你選擇安裝方式,此時我們可以用下面這條命令檢視軟體包將會在系統裡安裝哪些部分,以方便我們的選擇:     rpm -qpl Linux-1.4-6.i368.rpm     3.選擇安裝方式後,開始安裝。我們可以用rpm-ivh Linux-1.4-6.i368.rpm命令安裝此軟體。在安裝過程中,若系統提示此軟體已安裝過或因其他原因無法繼續安裝,但若我們確實想執行安裝命令,可以在 -ivh後加一引數“-replacepkgs”:     rpm -ivh -replacepkgs Linux-1.4-6.i368.rpm     4.有時我們解除安裝某個安裝過的軟體,只需執行rpm-e <檔名>命令即可。     5.對低版本軟體進行升級是提高其功能的好辦法,這樣可以省去我們解除安裝後再安裝新軟體的麻煩,要升級某個軟體,只須執行如下命令:rpm -uvh <檔名>,注意:此時的檔名必須是要升級軟體的升級補丁     6.另外一個安裝軟體的方法可謂是Linux的獨到之處,同時也是RMP強大功能的一個表現:通過FTP站點直接線上安裝軟體。當找到含有你所需軟體的站點並與此網站連線後,執行下面的命令即可實現線上安裝,譬如線上安裝Linux-1.4-6.i368.rpm,可以用命令:     rpm -i ftp://ftp.pht.com/pub/linux/redhat/...-1.4-6.i368.rpm     7.在我們使用電腦過程中,難免會有誤操作,若我們誤刪了幾個檔案而影響了系統的效能時,怎樣查詢到底少了哪些檔案呢?RPM軟體包提供了一個查詢損壞檔案的功能,執行此命令:rpm -Va即可,Linux將為你列出所有損壞的檔案。你可以通過Linux的安裝光碟進行修復。     8.Linux系統中檔案繁多,在使用過程中,難免會碰到我們不認識的檔案,在Windows下我們可以用“開始/查詢”選單快速判斷某個檔案屬於哪個資料夾,在Linux中,下面這條命令列可以幫助我們快速判定某個檔案屬於哪個軟體包:     rpm -qf <檔名>     9.當每個軟體包安裝在Linux系統後,安裝檔案都會到RPM資料庫中“報到”,所以,我們要查詢某個已安裝軟體的屬性時,只需到此資料庫中查詢即可。注意:此時的查詢命令不同於1和8介紹的查詢,這種方法只適用於已安裝過的軟體包!命令格式:     rpm -引數 <檔名>   在 Linux 作業系統下,幾乎所有的軟體均通過RPM 進行安裝、解除安裝及管理等操作。RPM 的全稱為Redhat Package Manager ,是由Redhat 公司提出的,用於管理Linux 下軟體包的軟體。Linux 安裝時,除了幾個核心模組以外,其餘幾乎所有的模組均通過RPM 完成安裝。RPM 有五種操作模式,分別為:安裝、解除安裝、升級、查詢和驗證。 RPM 安裝操作  命令:  rpm -i 需要安裝的包檔名  舉例如下:  rpm -i example.rpm 安裝 example.rpm 包;  rpm -iv example.rpm 安裝 example.rpm 包並在安裝過程中顯示正在安裝的檔案資訊;  rpm -ivh example.rpm 安裝 example.rpm 包並在安裝過程中顯示正在安裝的檔案資訊及安裝進度; RPM 查詢操作  命令:  rpm -q … 附加查詢命令:  a 查詢所有已經安裝的包以下兩個附加命令用於查詢安裝包的資訊;  i 顯示安裝包的資訊;  l 顯示安裝包中的所有檔案被安裝到哪些目錄下;  s 顯示安裝版中的所有檔案狀態及被安裝到哪些目錄下;以下兩個附加命令用於指定需要查詢的是安裝包還是已安裝後的檔案;  p 查詢的是安裝包的資訊;  f 查詢的是已安裝的某檔案資訊; 舉例如下:  rpm -qa | grep tomcat4 檢視 tomcat4 是否被安裝;  rpm -qip example.rpm 檢視 example.rpm 安裝包的資訊;  rpm -qif /bin/df 檢視/bin/df 檔案所在安裝包的資訊;  rpm -qlf /bin/df 檢視/bin/df 檔案所在安裝包中的各個檔案分別被安裝到哪個目錄下; RPM 解除安裝操作  命令:  rpm -e 需要解除安裝的安裝包  在解除安裝之前,通常需要使用rpm -q …命令查出需要解除安裝的安裝包名稱。  舉例如下:  rpm -e tomcat4 解除安裝 tomcat4 軟體包 RPM 升級操作  命令:  rpm -U 需要升級的包  舉例如下:  rpm -Uvh example.rpm 升級 example.rpm 軟體包 RPM 驗證操作  命令:  rpm -V 需要驗證的包  舉例如下:  rpm -Vf /etc/tomcat4/tomcat4.conf  輸出資訊類似如下:  S.5....T c /etc/tomcat4/tomcat4.conf  其中,S 表示檔案大小修改過,T 表示檔案日期修改過。限於篇幅,更多的驗證資訊請您參考rpm 幫助檔案:man rpm RPM 的其他附加命令  --force 強制操作 如強制安裝刪除等;  --requires 顯示該包的依賴關係;  --nodeps 忽略依賴關係並繼續操作