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
结果截图如下:
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