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