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
卸載命令做卸載操作。