以安裝apache服務為例來介紹rpm指令,rpm指令需要我們手工解決rpm包之間的依賴,而且rpm指令需要本地已經下載下傳好了安裝包。以下通過執行個體來學習rpm指令。linux裡面的二進制包又叫rpm包又叫系統預設包相當于windows的exe檔案,rpm包管理有兩種方式:一種是我們此次要說的rpm指令,另外一種叫yum線上安裝。
1.怎麼檢視本機有沒有安裝過apache服務?
[[email protected] Packages]# rpm -q httpd
httpd-2.2.15-29.el6.centos.i686
[[email protected] Packages]# rpm -qa |grep httpd
httpd-tools-2.2.15-29.el6.centos.i686
httpd-2.2.15-29.el6.centos.i686
指令解釋:以上兩種方法都可以檢視本機是否安裝了httpd服務,如果查詢有結果,說明已經安裝了。"rpm -q httpd"和“rpm -qa|grep httpd”有什麼差別?
rpm -q httpd:-q即query的縮寫,表示查詢包名為httpd的rpm軟體包是否安裝
rpm -qa|grep httpd:a即all的縮寫,rpm -qa是查詢本機安裝的所有rpm軟體包
2.如何解除安裝掉已經安裝過的httpd呢?
rpm -e --nodeps httpd
#或者
rpm -e --nodeps httpd-2.2.15-29.el6.centos.i686
-e:erase本意是橡皮,這裡表示移除删除的意思,當rpm要删除的包有依賴關系時,linux會提示你,最終也删除不成功,加入--nodeps選項可以忽略這些依賴關系直接删除。
3.如何安裝httpd服務?
[[email protected] Packages]# rpm -ivh httpd-2.2.15-29.el6.centos.i686.rpm
error: Failed dependencies:
httpd-tools = 2.2.15-29.el6.centos is needed by httpd-2.2.15-29.el6.centos.i686
此時有個前提,就是目前所在Packages目錄中需要包含要安裝的httpd-2.2.15-29.el6.centos.i686.rpm軟體包,不然會報出“error: open of = failed: 沒有那個檔案或目錄”的錯誤,我們看上邊指令行中的錯誤是說依賴的問題,我們就先要追根溯源的去安裝被依賴的rpm包。
[[email protected] Packages]# rpm -ivh httpd-tools-2.2.15-29.el6.centos.i686.rpm
Preparing... ########################################### [100%]
1:httpd-tools ########################################### [100%]
[[email protected] Packages]# rpm -ivh httpd-2.2.15-29.el6.centos.i686.rpm
Preparing... ########################################### [100%]
1:httpd ########################################### [100%]
注意:這裡時使用的包的全名。-i:install -v:verbose詳細的意思 h:hash
4.安裝好之後,我的檔案都被安裝在了哪些目錄,我安裝好了,去哪找啟動檔案或者配置檔案啊,是不是感覺有點迷茫?
rpm -ql httpd
或者
rpm -qlp httpd-2.2.15-29.el6.centos.i686.rpm
結果截圖如下:

rpm -ql httpd:-l是location的意思,顯示後邊軟體包httpd包含檔案的位置資訊
rpm -qlp httpd-2.2.15-29.el6.centos.i686.rpm:p是package(中文意思是包)的意思,表示後邊跟的是包的全名
5.如何查詢已安裝的rpm包httpd的版本等資訊?
rpm -qi httpd #i:info的簡寫
或者
rpm -qip httpd-2.2.15-29.el6.centos.i686.rpm #要求目前目錄要含有這個軟體包,不然找不到檔案呀
結果如下:
[[email protected] Packages]# rpm -qi httpd
Name : httpd Relocations: (not relocatable)
Version : 2.2.15 Vendor: CentOS
Release : 29.el6.centos Build Date: 2013年08月14日 星期三 01時28分20秒
Install Date: 2017年12月05日 星期二 19時16分51秒 Build Host: c6b8.bsys.dev.centos.org
Group : System Environment/Daemons Source RPM: httpd-2.2.15-29.el6.centos.src.rpm
Size : 2905719 License: ASL 2.0
Signature : RSA/SHA1, 2013年08月14日 星期三 01時32分37秒, Key ID 0946fca2c105b9de
Packager : CentOS BuildSystem <http://bugs.centos.org>
URL : http://httpd.apache.org/
Summary : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.
[[email protected] Packages]# rpm -qip httpd-2.2.15-29.el6.centos.i686.rpm
Name : httpd Relocations: (not relocatable)
Version : 2.2.15 Vendor: CentOS
Release : 29.el6.centos Build Date: 2013年08月14日 星期三 01時28分20秒
Install Date: (not installed) Build Host: c6b8.bsys.dev.centos.org
Group : System Environment/Daemons Source RPM: httpd-2.2.15-29.el6.centos.src.rpm
Size : 2905719 License: ASL 2.0
Signature : RSA/SHA1, 2013年08月14日 星期三 01時32分37秒, Key ID 0946fca2c105b9de
Packager : CentOS BuildSystem <http://bugs.centos.org>
URL : http://httpd.apache.org/
Summary : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.
總結:
1.不管是httpd的rpm包安裝,還是mysql的rpm軟體包安裝,亦或是其他rpm軟體包的安裝,哪類檔案安裝到哪類檔案夾下面,都是預先在在rpm包裡定義好的,一般來說,有如下的約定:
/usr/[s]bin:存放安裝後的啟動檔案
/etc/xxxx:xxxx軟體的配置檔案
/usr/lib/xxxx:xxxx軟體依賴的庫
/usr/share/doc/xxxx,/usr/share/man/xxxx:xxxx軟體的幫助文檔
2.rpm包安裝後如果産生服務都在/etc/rc.d/init.d目錄下,比如啟動httpd服務可以通過如下方式:
/etc/rc.d/init.d/httpd start或者service httpd start 或者/usr/sbin/apachectl -k start