RPM
rpm,Redhat Package Manager,即为红帽公司为RHEL开发的专用包管理器,后来更改为RPM Package Manager,类似于GNU项目,使用递归命名,GNU's Not Unix.
一、RPM包与软件包的区别
1、软件包分类
源码包:C源代码包
rpm包:编译之后的二进制包
2、源码包
优点:开源;可以自由选择所需功能;可看源代码;卸载方便(直接删除安装位置);
缺点:安装步骤过多;编译时间过长;
3、RPM包
优点:使用简单,只需要几个命令就可以实现包的安装、升级、查询、卸载;安装速度快;
缺点:不能看源代码;功能选择不如源代码灵活;依赖性;
二、RPM包命名和依赖性
[root@localhost ~]# httpd-2.4.6-67.el7.centos.x86_64.rpm
httpd ---> 软件包名
2.4.6 ---> 软件版本
67 ---> 软件发行的次数
el7.centos ---> 适合的linux平台
x86_64 ---> 适合的硬件平台
rpm ---> rpm包扩展名
2、RPM包的依赖性
树形依赖性:a -> b -> c,即a依赖b,b依赖c
环形依赖:a -> b -> c -> a
模块依赖:模块依赖查询网站:www.rpmfind.com
三、RPM包的安装、升级、卸载、查询
1、包全名和包名
包全名包名
例如:httpd-2.4.6-67.el7.centos.x86_64.rpm --->例如:httpd
操作的包时没有安装的软件包时,使用包全名 ---> 操作的已经安装的软件包时,使用包名
安装、升级时用 --->查询、卸载时用
2、RPM安装
#rpm包的安装格式
rpm -ivh 包全名
选项:
-i(install) 安装
-v(verbose) 显示详细信息
-h(hash) 显示进度
--nodeps 不检测依赖性
可能会有很多依赖性问题出现,根据一个个依赖性继续rpm安装就可以了
[root@localhost mypackages]# rpm -ivh httpd-2.4.6-89.el7.centos.x86_64
错误:打开 httpd-2.4.6-89.el7.centos.x86_64 失败:没有那个文件或目录
[root@localhost mypackages]# rpm -ivh httpd-2.4.6-89.el7.centos.x86_64.rpm
错误:依赖检测失败:
httpd-tools = 2.4.6-89.el7.centos 被 httpd-2.4.6-89.el7.centos.x86_64 需要
[root@localhost mypackages]# rpm -ivh httpd-tools-2.4.6-89.el7.centos.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:httpd-tools-2.4.6-89.el7.centos ################################# [100%]
[root@localhost mypackages]#
3、RPM包升级
#RPM包的升级格式
rpm -Uvh 包全名
选项:
-U (upgrade) 升级
[root@localhost mypackages]# rpm -Uvh httpd-tools-2.4.6-89.el7.centos.x86_64.rpm
过程和安装完全一样。
4、RPM包的卸载
#RPM包的卸载格式
rpm -e 包名
选项:
-e (erase) 卸载
--nodeps 不检测依赖性
[root@localhost mypackages]# rpm -e httpd-2.4.6-89.el7.centos.x86_64.rpm — nodeps
注:卸载要按照安装依赖性的反向卸载
5、RPM包的查询
===查询是否安装:
[root@localhost ~]# rpm -q 包名
选项:
-q 查询(query)
[root@localhost mypackages]# rpm -q httpd
httpd-2.4.6-89.el7.centos.x86_64
[root@localhost ~]# rpm -qa
===查询所有已经安装的RPM包
选项:
-a 所有
[root@localhost mypackages]# rpm -qa httpd
httpd-2.4.6-89.el7.centos.x86_64
===查询软件包的详细信息:
[root@localhost ~]# rpm -qi 包名
选项:
-i 查询软件信息(information)
[root@localhost mypackages]# rpm -qi httpd
Name : httpd
Version : 2.4.6
Release : 89.el7.centos
Architecture: x86_64
Install Date: 2019年07月12日 星期五 22时26分27秒
Group : System Environment/Daemons
Size : 9817301
License : ASL 2.0
Signature : RSA/SHA256, 2019年04月29日 星期一 23时45分07秒, Key ID 24c6a8a7f4a80eb5
Source RPM : httpd-2.4.6-89.el7.centos.src.rpm
Build Date : 2019年04月24日 星期三 21时48分37秒
Build Host : x86-02.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://httpd.apache.org/
Summary : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.
===查询包中文件安装位置
[root@localhost ~]# rpm -ql 包名
#查询包中文件安装位置
选项:
-l 列表(list)
[root@localhost mypackages]# rpm -ql httpd
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
===查询系统文件属于哪个RPM包
[root@localhost ~]# rpm -qf 系统文件名
选项:
-f 查询系统文件属于哪个RPM包(file)
[root@localhost mypackages]# rpm -qf httpd-2.4.6-89.el7.centos.x86_64.rpm
文件 /root/mypackages/httpd-2.4.6-89.el7.centos.x86_64.rpm 不属于任何软件包
===查询软件包的依赖性
[root@localhost ~]# rpm -qR 包名
选项:
-R 查询软件包的依赖性(requires)
[root@localhost mypackages]# rpm -qR httpd-2.4.6-89.el7.centos.x86_64.rpm
关于运维学习、分享、交流,笔者开通了微信公众号【运维猫】,感兴趣的朋友可以关注下,欢迎加入,建立属于我们自己的小圈子,一起学运维知识。