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)安裝命令
#注意一定是包全名。如果跟包全名的命令要注意路徑
[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包軟體的安裝位置都是這樣。
安裝的時候一定要兩個進度條都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/
兩個是軟連結的關係。service
是Red 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
命令一條命令,所有需要的依賴包都會自動安裝好,也就是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
解除安裝命令做解除安裝操作。