天天看點

linux中使用rpm指令詳解

        以安裝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      

結果截圖如下:

linux中使用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

繼續閱讀