Linux rpm命令管理(安裝、升級和解除安裝)RPM包方法詳解

2020-07-16 10:04:47
通過前面章節對 rpm 命令的介紹,本節開始學習使用 rpm 命令安裝、升級或解除安裝 RPM 包。

我們先安裝 apache 程式。之所以安裝 apache 程式,是因為我們後續安裝原始碼包時也計劃安裝 apache 程式,這樣就能初步認識到原始碼包和 RPM 包的區別。不過需要注意的是,同一個程式的RPM 包和原始碼包可以安裝到一台伺服器上,但是只能啟動一個,因為它們需要佔用同樣的 80 埠。不過,如果真在生產伺服器上,那麼一定不會同時安裝兩個 apache 程式,容易把管理員搞糊塗,而且會占用更多的伺服器磁碟空間。

RPM 包預設安裝路徑

原始碼包和 RPM 包安裝的程式為什麼可以在一台伺服器上呢?主要是因為安裝路徑不同,所以不會覆蓋安裝。RPM 包一般採用系統預設路徑安裝,而原始碼包一般通過手工指定安裝路徑(一般安裝到 /usr/local/ 中)安裝。

RPM 包預設安裝路徑是可以通過命令査詢的,一般安裝在如表 1 所示的目錄中。

表 1 RPM包預設安裝路徑
安裝路徑 含 義
/etc/ 組態檔安裝目錄
/usr/bin/ 可執行的命令安裝目錄
/usr/lib/ 程式所使用的函數庫儲存位置
/usr/share/doc/ 基本的軟體使用手冊儲存位置
/usr/share/man/ 幫助檔案儲存位置

RPM 包難道就不能手工指定安裝路徑嗎?當然是可以的,但是一旦手工指定安裝路徑,所有的安裝檔案就會安裝到手工指定位置,而不會安裝到系統預設位置。而系統的預設搜尋位置並不會改變,依然會去預設位置之下搜尋,當然系統就不能直接找到所需的檔案,也就失去了作為系統預設安裝路徑的一些好處。所以我們一般不會指定 RPM 包的安裝路徑,而使用預設安裝路徑。

RPM包的安裝

[[email protected] ~]# rpm -ivh 包全名
#注意一定是包全名。如果是跟包全名的命令,則要注意路徑,因為軟體包在光碟當中

選項:
  • -i:安裝(install);
  • -v:顯示更詳細的資訊(verbose);
  • -h:列印 #,顯示安裝進度(hash);

例如,安裝 apache 軟體包,注意出現兩個 100% 才是正確安裝,第一個 100% 僅是在準備,第二個 100% 才是正確安裝。如下所示:

[[email protected] ~]# rpm -ivh
/mnt/cdrom/Packages/httpd-2.2.15-15.el6.centos.1.i686.rpm
Preparing...
####################
[100%]
1:httpd
####################
[100%]

如果打算同時安裝多個軟體包呢?可以用一條命令同時安裝,將多個軟體包用空格分開就可以了。

[[email protected] ~]# rpm -ivh a.rpm b.rpm c.rpm
#一次安裝多個軟體包

如果還有其他安裝要求,比如想強制安裝某個軟體包而不管它是否有依賴性,就可以通過選項進行調整:
  • -nodeps:不檢測依賴性安裝。軟體安裝時會檢測依賴性,確定所需的底層軟體是否安裝,如果沒有安裝則會報錯。如果不管依賴性,想強制安裝,則可以使用這個選項。注意:這樣不檢測依賴性安裝的軟體基本上是不能使用的,所以不建議這樣做。
  • -replacefiles:替換檔案安裝。如果要安裝軟體包,但是包中的部分檔案已經存在,那麼在正常安裝時會報"某個檔案已經存在"的錯誤,從而導致軟體無法安裝。使用這個選項可以忽略這個報錯而覆蓋安裝。
  • -replacepkgs:替換軟體包安裝。如果軟體包已經安裝,那麼此選項可以把軟體包重複安裝一遍。
  • -force:強制安裝。不管是否已經安裝,都重新安裝。也就是-replacefiles和-replacepkgs的綜合。
  • -test:測試安裝。不會實際安裝,只是檢測一下依賴性。
  • -prefix:指定安裝路徑。為安裝軟體指定安裝路徑,而不使用預設安裝路徑。注意:如果指定了安裝路徑,軟體沒有安裝到系統預設路徑中,那麼系統會找不到這些安裝的軟體,需要進行手工設定才能被系統識別。所以,我們一遍採用預設路徑安裝RPM包。

apache 服務安裝成功後,嘗試啟動。命令如下:

[[email protected] ~]# service 服務名 start|stop| restart|status

引數:
  • start:啟動服務;
  • stop:停止服務;
  • restart:重新啟動服務;
  • status: 査看服務狀態;

例如:

[[email protected] ~]# service httpd start #啟動apache服務

服務啟動之後,就可以査看埠號 80 是否出現。命令如下:

[[email protected] ~]# netstat -tlun | grep 80
tcp 0 0 :::80 :::* LISTEN

我們也可以在瀏覽器中輸入 Linux 伺服器的 IP 地址,存取這個 apache 伺服器。目前在 apache 中沒有建立任何網頁,所以看到的只是測試頁,如圖 2 所示。


圖 2 Apache測試頁