『學了就忘』Linux軟體包管理 — 41、RPM包的基本使用

繁華似錦Fighting發表於2021-11-15

1、RPM包命名規則

一個RPM包:httpd-2.2.15-15.e16.centos.1.i686.rpm

  • httpd:軟體包名。
  • 2.2.15:軟體版本。
  • 15:軟體釋出的次數。
  • el6/centos:軟體發行商。el6RedHat公司釋出,適合RHEL6.xRed Hat Enterprise Linux)和CentOS6.x下使用。(el6指的就是RHEL6.x平臺)
  • i686:適合的硬體平臺。RPM包可以在不同的硬體平臺安裝,選擇適合不同CPU的軟體版本,可以最大化的發揮CPU效能,所以出現了所謂的i386386以上計算機都可以安裝)、i586586以上的計算機都可以安裝)、i686(奔騰II以上計算機都可以安裝,目前所有的CPU都是奔騰II以上,所以這個軟體版本居多)、x86_64(64位CPU可以安裝)和noarch(沒有硬體限制)等檔名。
  • .rpm:RPM包的副檔名。我們說過Linux下檔案不是靠副檔名區分檔案型別,也就是Linux中副檔名沒有任何含義。可是這裡怎麼又出現了副檔名呢?原因很簡單,如果我不把RPM包的副檔名叫做.rpm,管理員很難知道這是一個RPM包,當然也就無法正確安裝了。也就是說如果RPM包不用.rpm作為副檔名,系統可以正確識別沒有問題,可是管理員很難識別這是個什麼樣的檔案。

注意

  • 包全名:如果操作的是未安裝軟體包,則使用包全名,而且需要注意使用絕對路徑(一般會進入到軟體包目錄進行安裝)。
  • 包名:如果操作的是已經安裝的軟體包,則使用包名即可。系統會生成RPM包的資料庫(/var/lib/rpm/),只要安裝過的軟體包,就會出現在這個資料庫中。而且可以在任意路徑下操作(因為是從資料庫中查詢)。
    提示:/var/lib/rpm/這裡邊的檔案都是二進位制的,不能用vim來檢視。

2、RPM包安裝

(1)安裝命令

#注意一定是包全名。如果跟包全名的命令要注意路徑
[root@localhost ~]# rpm -ivh 包全名

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

(2)常用選項

  • --nodeps:不檢測依賴性安裝。軟體時會檢測依賴性,確定所需的底層軟體是否安裝。如果沒有安裝則會報錯。如果我不管依賴性,想強行安裝,可以使用這個選項。
    注意:這樣不檢測依賴性安裝的軟體基本是不能使用的,所以不建議這樣做。
    (這個選項在實際工作中,不要使用。)
  • --replacefiles:替換檔案安裝。如果安裝軟體包,可是包中部分檔案已經存在,那麼正常安裝時候,會報錯“某個檔案已經存在”從而導致軟體無法安裝,使用這個選項可以忽視這個報錯,而覆蓋安裝。(請看--force
  • --replacepkgs:替換軟體包安裝。如果軟體包已經安裝,此選項可以把軟體包重複安裝一遍。(請看--force
  • --force:強制安裝。不管是否已經安裝,都重新安裝。就是--replacefiles--replacepkgs的集合。
    (所以上邊兩個選項--replacefiles--replacepkgs不用記憶,只要記住--force就好。應對誤刪除軟體中檔案的時候。覆蓋安裝代價最小,先不要考慮解除安裝。)
  • --test:測試安裝。不會實際安裝,只是檢測一下依賴性。
  • --prefix:指定安裝路徑。為安裝軟體指定安裝路徑,而不使用預設安裝路徑(預設安裝路徑是軟體作者決定的,他覺得安裝在什麼位置好,才設定的位置)。注意:如果指定了安裝路徑,軟體沒有安裝到系統預設路徑中的話,系統會找不到這些安裝的軟體,需要進行手工配置才能被系統識別。所以RPM包我們一般都採用預設路徑安裝。
    不指定安裝位置的好處:
    1)預設安裝位置是系統的習慣位置。
    2)RPM包管理系統是有解除安裝命令的。(通過RPM資料庫記錄軟體的安裝位置),一條命令解除安裝,非常方便,並且解除安裝的很乾淨。如果你指定了安裝目錄,則RPM的刪除命令就不好用了。
    注:原始碼包安裝的時候一定要指定軟體的安裝位置。

(3)RPM包預設安裝位置

一般情況下RPM包的安裝位置,不是所有的RPM包軟體的安裝位置都是這樣。

image

安裝的時候一定要兩個進度條都100%才算安裝成功,第一個進度條100%是準備安裝。第二個進度條才是軟體真正安裝成功。

注意:每個RPM軟體包的安裝,隨著不同的Linux系統版本,不同版本的RPM軟體包,Linux上已安裝程式的多少,所需要安裝的軟體包的數量是不同的。(因為安裝的軟體越多,已經安裝的依賴包就越多,後邊再安裝的軟體包有相同的依賴,就不再需要安裝了。)

3、RPM安裝方式的服務啟動

[root@localhost ~]# service 服務名 start|stop|restart|status

引數:
  start:啟動服務
  stop:停止服務
  restart:重啟服務
  status:檢視服務狀態

# 下面命令也行
[root@localhost ~]# systemctl restart httpd

注意:

  • 只有RPM包安裝的軟體才可以這樣啟動。原始碼包安裝的軟體是不能這樣啟動的。
  • Linux系統中所有的執行檔案都需要訪問絕對路徑,服務的啟動也是如此。
    /etc/rc.d/init.d/軟體名 + start|stop|restart|status也可以啟動軟體。這個是標準啟動方法。
  • /etc/init.d/httpd也行和上邊/etc/rc.d/init.d/兩個是軟連結的關係。
  • serviceRed Hat專有命令,其他Linux系統不一定有。service實際上就是搜尋/init.d/目錄。

4、RPM安裝方式的服務升級

[root@localhost ~]# rpm -Uvh 包全名
選項:
  -U(大寫):升級安裝,如果沒有安裝過,系統直接安裝。如果安裝過的版本較舊,則升級到新版本(upgrade)


[root@localhost ~]# rpm -Fvh 包全名
選項:
  -F(大寫)升級安裝,如果沒有安裝過,則不會安裝。必須安裝有較舊版本,才能升級(freshen)

5、RPM安裝方式的服務解除安裝

[root@localhost ~]# rpm -e 包名(包名:可以在任意路徑下操作)

選項:
  -nodeps:不檢查依賴性
  -e:解除安裝

RPM包不僅安裝的時候有依賴性,解除安裝的時候也是有依賴性的。安裝的時候1234,解除安裝的時候需要4321。
(我們一般不會記住軟體包安裝的依賴性順序,解除安裝的時候也會提示你依賴關係,按提示依次解除安裝。)

注意:

  • yum命令也可以解除安裝RPM安裝包,但是不建議直接用yum解除安裝命令解除安裝軟體。
  • 原因:yum解除安裝命令,一條命令直接解除安裝軟體和其相依賴的軟體。
  • 例如:
  • e包依賴f包,f包依賴a包,a包依賴b包,b包依賴c包,c包依賴d包(e—>f—>a—>b—>c—>d)。如果我安裝b包,通過yum命令一條命令,所有需要的依賴包都會自動安裝好,也就是cd包(也就是先安裝d包,在安裝c包,最後在安裝b包)。
  • 如果我現在要解除安裝b包,yum解除安裝命令,會把b包和依賴他的包,也就是efa包都一起解除安裝掉(也就是先解除安裝e包,再解除安裝f包,再解除安裝a包,最後解除安裝b包),但解除安裝的時候你不知道efa包乾什麼用的。這些包除了依賴b包,可能其他的軟體包也會依賴這些包中的一些包,這樣會出現一些問題,會導致其他的依賴這些包的軟體使用會出現問題。
  • 而且你不記住解除安裝的這些相關依賴包是什麼,會導致你安裝不回來(這個意思是,如果解除安裝b包,然後導致其他一些軟體不能正常使用了,我想再通過yum命令重新安裝b包,安裝也是cd包,也不會再是安裝efa包,兩個方向是相反的。)。
  • yum的解除安裝命令很霸道,初學者不建議使用yum解除安裝命令做解除安裝操作。

相關文章