天天看點

rpm包管理詳解(1)

在linux世界裡流行兩種包管理方式,分别是redhat系的rpm和debian系的deb。其中rpm的使用更為廣泛,我打算接下來分多章詳細介紹一下rpm的包管理機制。

包管理是作業系統用來維護各元件版本的一種方式,對于軟體發行者來說,将自己的程式制作成标準的rpm格式也會使得程式的安裝、更新和解除安裝變得非常容易。是以linux下幾乎所有流行的程式都有rpm格式的包,有些是發行者自己打包,也有些第三方提供rpm包,例如redhat發行版裡的rpm都是redhat自己打包,他們定期打patch,更新并且維護包之間的依賴關系,他們制作的rpm包是最可以信任的。除此之外,http://dag.wieers.com/rpm/這個網站也提供很多較新的rpm包,在redhat官方找不到的包很多在這裡都可以找到。

在網上搜尋rpm包最常用的方式是通過rpmfind.net進行搜尋,它會提供各個發行版下的各個版本的包下載下傳。注意一定要找到正确的發行版下對應的包,由于依賴底層庫和庫版本的不同,不同版本的發行版的包最好不要混裝。

今天先介紹rpm的安裝,基本的安裝指令如下

rpm -ivh xxxxxxx.rpm

i代表安裝,e代表解除安裝,v代表顯示安裝過程,h代表顯示#号樣式的進度

下面看一個簡單的例子

[leconte@localhost soft]$ sudo rpm -ivh enca-1.9-4.el5.rf.i386.rpm
warning: enca-1.9-4.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
Preparing...                ########################################### [100%]
   1:enca                   ########################################### [100%]
      

rpm包這樣就裝上了,但是很多時候沒有這麼順利,由于rpm包之間可能存在依賴關系,在依賴關系無法滿足的情況下預設是沒法繼續安裝的;再比如某個包已經安裝過,如果想再裝一次,也是無法繼續的。這種情況下可以通過一些參數來強制執行,但是強制執行的後果可能是裝的程式無法正常使用,因為它依賴的包你系統并沒有提供。

安裝時常用的參數如下:

--test 測試安裝,并不真實安裝而僅僅是測試能否安裝。

--nodeps 忽略依賴關系強行安裝

--force 強制替換現有版本

--noscripts 僅安裝檔案不執行附加腳本

下面示範一個強行安裝的例子

[leconte@localhost soft]$ sudo rpm -ivh awstats-6.9-1.noarch.rpm
error: Failed dependencies:
        perl(LWP::UserAgent) is needed by awstats-6.9-1.noarch
[leconte@localhost soft]$ sudo rpm -ivh awstats-6.9-1.noarch.rpm --nodeps
Preparing...                ########################################### [100%]
   1:awstats                ########################################### [100%]
      

awstats依賴的PERL子產品LWP::UserAgent并沒有裝,是以預設是無法安裝的,但是通過nodeps可以強制安裝,而LWP::UserAgent可以通過cpan去後續安裝。也就是說,如果你明白你在做什麼,那麼強制安裝并不可怕。

需要注意的是,rpm包的安裝和解除安裝都需要在系統的rpm資料庫裡儲存資訊,是以需要root權限。

繼續閱讀