1. 程式人生 > 其它 >linux的軟體安裝—通過RPM

linux的軟體安裝—通過RPM

我們知道,在linux中,安裝軟體有三種方法,原始碼、rpm/deb軟體包、yum/apt這三種方式。在這裡,我介紹一下用rpm安裝的方法。

我們先來看看windows的安裝方式。windows中,我們習慣了先弄到完整的安裝檔案,這個檔案要麼在光盤裡,要麼從網上下載,弄到之後,裡面常常有個setup或者install的程式,點選後,就可以把整個程式安裝完成了。

在linux中,也有類似的方法,它就是rpm方式。我們也是先找到rpm軟體包,然後通過rpm這個命令包軟體安裝到系統當中,這個rpm命令就類似我們的setup或者install程式,rpm軟體包就是windows中的安裝檔案。

為什麼會出現rpm這種安裝方式呢?我們知道,在包管理軟體,即rpm、dpkg出現之前,主要是通過原始碼的方式來安裝軟體。原始碼的安裝過程是怎麼樣的呢?首先要找到原始碼,從軟體的官方網站或者github上面找到,並下載。下載到本地,通常是一個壓縮包,需要先把壓縮包解壓開來,釋放裡面的原始碼檔案。這樣就可以直接編譯生成軟體了嗎?當然不行,在編譯之前,需要通過檢查系統環境,看看有沒有缺少的東西,如果缺少了還要補上。環境合格後,就可以用編譯工具進行編譯了,編譯完了,就可以把軟體安裝上了。如果在檢查環境中缺少某個軟體,也是通過原始碼方式安裝的,幾個迴圈下來,軟體沒裝上,一直在編譯安裝依賴檔案(這個又是啥?後面會解釋)。此外,編譯軟體也是非常耗時間的,如果電腦配置不高,你吃晚飯了,軟體還沒有編譯好呢!這個過程是不是想想都恐怖?在linux早期確實是這樣,很久以前試過安裝筆記本的無線網絡卡的驅動,就經歷了這個恐怖的過程,整整搞了我幾個晚上。

所以,為了解決這個問題,人們就發明了包管理工具,rpm就是其中一個這個。它的全稱是Redhat Package Manager,中文意思就是紅帽包管理,是由大名鼎鼎的紅帽公司整出來的,所以就用自己的公司起名了。

它的原理是怎麼樣的呢?rpm包提起把軟體的原始碼編譯了,形成可執行檔案,並且在包裡面提供了軟體的相關資訊,比如軟體名稱、版本、依賴關係,並且會有一個數據庫,集中管理系統中安裝了的包的資訊。這個是不是有點類似windows的軟體管理方式呢?通過rpm包,你就可以省去了找原始碼、檢測軟體環境、編譯軟體的過程了,這些東西,rpm包提前幫你完成。你只要安裝就可以了。在安裝的過程中,雖然也會出現依賴軟體缺少的情況,但也可以通過rpm的方式來安裝這些依賴檔案。

在繼續之前,先解釋什麼是依賴包。

玩PC遊戲的都有這麼個經歷,安裝windows遊戲的時候,常常需要你先安裝.net的框架,如果沒有這個框架,那麼程式就無法執行;再比如,有些遊戲有時候會要求你安裝DirectX或者升級你的DirectX版本,沒有這個DirectX遊戲是無法啟動的。

不玩遊戲的可以這麼理解,這個依賴關係有點類似建房子時候的地基,你的房子是建在地基上面的,如果沒有這個地基,人家是不會在上面建房子的。這個被依賴的包就是地基。房子就是你的軟體。所以,安裝的時候,一定要先解決依賴關係。

好了,我們現在正是的來看一下怎麼用rmp來安裝軟體。

首先,我們要找到rpm包,這上哪找呢?通常可以下載每個發行版的安裝光碟,在安裝光碟中會有常用的軟體包。也可以在網上找,網上的途徑主要有:

第一、國內的各大開源映象,如清華大學開源映象、浙江大學開源映象、阿里巴巴開源映象、網易開源映象等,非常的多。

第二、到發行版的網站去找,比如fedoraproject的網站,suse的網站packagehub.suse.com。這個就需要根據自己的發行版來了。

我的目前用了光碟上的rpm包,截圖是這樣的:

這些rpm結尾的就是rpm軟體包了。如果你也是通過系統光碟的形式安裝,需要先用mount命令把光碟掛載到系統。

我們先來看看rpm包長的什麼樣子,我們隨便拿一個來看看:

這裡的xorg-x11-drv-xgi就是軟體包的名字,1.6.1就是版本號,1.el6就是釋出號,x86_64就是硬體平臺,這裡要特別注意的是el6和x86_64這兩個東西,el6代表的是適用centos6系統,如果是el7就代表是適用centos7系統,x86_64代表是在64為系統中使用的,如果要在32系統中使用,就要用i386的,安裝的時候要注意。所以,rpm的命名規則是這樣的:軟體名-版本號-釋出號-硬體平臺。

rpm的使用主要有三方面:查詢、安裝、解除安裝,我們一個個來講。

rpm的查詢

查詢命令的核心是-q(即英文query的首字母)引數,後面可以加手機號碼轉讓平臺地圖其他東西,基本上,只要帶了-q就是表示查詢的意思。

比如,要查詢系統中安裝了哪些軟體:rpm -qa,截圖只顯示了部分

要查詢某個軟體包是否安裝:rpm -q 軟體名,比如:rpm -q vim,我安裝的最小版本,沒有vim這個軟體

比如查詢某個安裝包的資訊:rpm -qpi 未安裝的軟體包,比如:

rpm -qpi vim-common-7.4.629-5.el6_8.1.x86_64.rpm,框框部分,就是rpm命名規則的部分內容

如果要查詢這個軟體包,會被安裝到哪個位置,可以用:rpm -qpl 未安裝的軟體包,比如:rpm -qpl vim-common-7.4.629-5.el6_8.1.x86_64.rpm | more, 這裡的"| more"使用來分頁顯示。

rpm的安裝

安裝命令的核心是-i(即英文install的首字母)引數,後面可以跟其他東西,如果直接用rpm -i 軟體包名字,那麼安裝過程就會一閃而過,只告訴你安裝結果。在windows的安裝過程,我們常常可以看到進度資訊,其實用rpm的安裝方式也可以看到,用上vh引數就可以了,比如:rpm -ivh vim-filesystem-7.4.629-5.el6_8.1.x86_64.rpm

有時候,會提示需要依賴軟體,比如:

提示需要vim-filesystem這個軟體,那麼我們找到這個軟體,把它安裝上就可以了。

rpm的解除安裝

解除安裝命令的核心是-e(即英文erase的首字母,為什麼不用remove呢?)引數

這個就很簡單了,rpm -e 軟體名,比如解除安裝剛安裝的vim-common,rpm -e vim-common。

如果你解除安裝那些被依賴的包,系統會報錯:

雖然你可以通過--force引數強制刪除,但不建議這麼做。再想想蓋房子的例子,假設房子有5層,如果你拆房子,先拆一樓,那麼房子就會這個塌下來,拆的時候就會很不安全了,威脅到周圍的房子。如果你從上面開始拆,5樓、4樓、3樓、2樓、1樓,這樣就可以順利的把房子拆掉。

解除安裝軟體也一樣,不能把基礎依賴包刪了,這樣會放別的軟體無法使用。拿安裝遊戲的例子來說,DirectX是許多遊戲共用介面,如果你把這個軟體包刪了,再刪了其中一個遊戲,那麼另外一個依賴這個介面的遊戲就無法運行了。

好了,rpm管理軟體的方式就介紹到這裡,如果想詳細瞭解可以用man手冊、或者去官網。希望對你有用~