『無慾則無求』Linux軟件包管理 — 40、rpm包基本使用

1、rpm包命名規則

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

  • httpd:軟件包名。
  • 2.2.15:軟件版本。
  • 15:軟件發佈的次數。
  • el6/centos:軟件發行商。el6是RedHat公司發佈,適合RHEL6.x(Red Hat Enterprise Linux)和CentOS6.x下使用。(el6指的就是RHEL6.x平臺)
  • i686:適合的硬件平臺。RPM包可以在不同的硬件平臺安裝,選擇適合不同CPU的軟件版本,可以最大化的發揮CPU性能,所以出現了所謂的i386(386以上計算機都可以安裝)、i586(586以上的計算機都可以安裝)、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)安裝命令

#注意一定是包全名。如果跟包全名的命令要注意路徑
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包軟件的安裝位置都是這樣。
在這裏插入圖片描述
安裝的時候一定要兩個進度條都100%纔算安裝成功,第一個進度條100%是準備安裝。第二個進度條纔是軟件真正安裝成功。

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

3、服務啓動

[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/兩個是軟鏈接的關係。
  • service 是Red Hat專有命令,其他Linux系統不一定有。service 實際上就是搜索/init.d/目錄。

4、RPM包升級

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

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

5、卸載

[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命令一條命令,所有需要的依賴包都會自動安裝好,也就是c、d包(也就是先安裝d包,在安裝c包,最後在安裝b包)。
  • 如果我現在要卸載b包,yum卸載命令,會把b包和依賴他的包,也就是e、f、a包都一起卸載掉(也就是先卸載e包,再卸載f包,再卸載a包,最後卸載b包),但卸載的時候你不知道e、f、a包乾什麼用的。這些包除了依賴b包,可能其他的軟件包也會依賴這些包中的一些包,這樣會出現一些問題,會導致其他的依賴這些包的軟件使用會出現問題。
  • 而且你不記住卸載的這些相關依賴包是什麼,會導致你安裝不回來(這個意思是,如果卸載b包,然後導致其他一些軟件不能正常使用了,我想再通過yum命令重新安裝b包,安裝也是c、d包,也不會再是安裝e、f、a包,兩個方向是相反的。)。
  • yum的卸載命令很霸道,初學者不建議使用yum卸載命令做卸載操作。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章