RPM软件包管理

  • 一、概述
  • 1、RPM是什么
  • 2、RPM有什么功能
  • 二、安装rpm软件包
  • 1、安装本地包
  • 2、安装光盘中的包
  • 3、安装网络上的包
  • 4、导入签名
  • 三、卸载rpm软件包
  • 四、解决软件包的依赖
  • 1、安装
  • 2、卸载
  • 五、查询rpm软件包
  • 1、已安装软件包
  • 2、未安装软件包
  • 六、升级rpm软件包
  • 七、RPM的优缺点


一、概述

1、RPM是什么

RPM是Red-Hat Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,算是一种行业标准。它是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件,.rpm扩展迷宫的文件都可以用RPM工具进行管理。

2、RPM有什么功能

  • 安装、卸载、升级和管理软件
  • 组件查询功能
  • 验证功能
  • 软件包GPG和MD5数字签名的导入、验证和发布
  • 软件包依赖处理
  • 选择安装
  • 网络远程安装功能

二、安装rpm软件包

1、安装本地包

rpm -ivh 完整路径和名称

  • -i:安装rpm包
  • -v:显示详细的处理信息
  • -h:用#显示安装进度

centos7下载rpm包 centos7安装rpm软件_rpm软件包

  • - -force:强制安装

centos7下载rpm包 centos7安装rpm软件_centos7_02

2、安装光盘中的包

yum安装的时候我们配置本地yum源的路径就是光盘的挂载目录,但是我们也可以使用rpm去安装光盘里的软件包

centos7下载rpm包 centos7安装rpm软件_centos7下载rpm包_03


centos7下载rpm包 centos7安装rpm软件_centos7下载rpm包_04

3、安装网络上的包

如果本地有这个软件包的话我们直接rpm安装即可,如果本地没有,那我们也不用下载到本地安装,可以直接使用rpm后面跟网络地址就可以安装了
这里有一个rpm下载的网站,可以查找你想要安装的包:https://pkgs.org/
这里以安装httpd为例,搜索httpd出现以下页面,选择你所要安装在哪个系统上(CentOS 7)还有你要安装哪个架构的,必须和你自己使用的系统相匹配才可以

centos7下载rpm包 centos7安装rpm软件_rpm_05


centos7下载rpm包 centos7安装rpm软件_rpm软件包_06


点击进入详情页,关于httpd软件有非常详细的介绍,列出了软件描述,软件依赖,下载地址,怎样安装以及它提供哪些东西和它会安装哪些东西还有更新信息等

centos7下载rpm包 centos7安装rpm软件_centos7_07


centos7下载rpm包 centos7安装rpm软件_rpm_08


rpm -ivh 后面跟网络路径就可以了(因为要先下载再安装所以时间可能会比较长)

centos7下载rpm包 centos7安装rpm软件_linux_09

4、导入签名

有一种情况:安装包的时候虽然成功了但是提示了警告,原因是因为没有检查签名

centos7下载rpm包 centos7安装rpm软件_linux_10


签名存放的位置:/etc/pki/rpm-gpg

centos7下载rpm包 centos7安装rpm软件_centos7_11


因为ntfs-3g是来自epel源,所以匹配的签名是epel-7这个签名

centos7下载rpm包 centos7安装rpm软件_rpm软件包_12


rpm --import:导入签名

centos7下载rpm包 centos7安装rpm软件_linux_13


centos7下载rpm包 centos7安装rpm软件_rpm软件包_14

三、卸载rpm软件包

rpm -e 后面跟软件包的名字即可

centos7下载rpm包 centos7安装rpm软件_linux_15


centos7下载rpm包 centos7安装rpm软件_centos7_16

四、解决软件包的依赖

用rpm管理软件包的时候,不管是安装还是卸载都会遇到一个核心的问题,那就是它不负责解决依赖性关系,不像yum自动安装依赖包,rpm需要手动解决依赖关系的问题

1、安装

–nodeps:忽略依赖关系(不建议使用)

centos7下载rpm包 centos7安装rpm软件_rpm_17

centos7下载rpm包 centos7安装rpm软件_rpm软件包_18


centos7下载rpm包 centos7安装rpm软件_centos7下载rpm包_19


centos7下载rpm包 centos7安装rpm软件_rpm软件包_20


centos7下载rpm包 centos7安装rpm软件_linux_21


centos7下载rpm包 centos7安装rpm软件_centos7_22


centos7下载rpm包 centos7安装rpm软件_centos7_23


所以这就是为什么rpm包安装的时候需要先安装依赖包的原因了

2、卸载

卸载的时候也会遇到因为依赖的问题而无法卸载的问题

centos7下载rpm包 centos7安装rpm软件_linux_24


centos7下载rpm包 centos7安装rpm软件_rpm_25


如果是用yum卸载的话,yum会将存在依赖关系的包一起卸载!

五、查询rpm软件包

1、已安装软件包

查询已安装的软件包是从本地rpm数据库中查找的
本地rpm数据库:/var/lib/rpm

rpm -q 软件名

#查询已安装的软件包

centos7下载rpm包 centos7安装rpm软件_rpm软件包_26


rpm -qi 软件名

#查询已安装的软件包的详情

centos7下载rpm包 centos7安装rpm软件_rpm_27


rpm -qc 软件名

#查询已安装的软件包的配置文件

centos7下载rpm包 centos7安装rpm软件_linux_28


rpm -ql 软件名

#查询已安装的软件包所有在系统中安装的文件

centos7下载rpm包 centos7安装rpm软件_rpm软件包_29


rpm -qd 软件名

#查询已安装的软件包的帮助文件

centos7下载rpm包 centos7安装rpm软件_rpm_30


rpm -qf 路径

#查询已安装的软件是由哪个安装包安装的

centos7下载rpm包 centos7安装rpm软件_linux_31


centos7下载rpm包 centos7安装rpm软件_rpm软件包_32


rpm -qa

#查询系统中所有已安装的软件包

假如你不记得软件包的具体名字你可以使用这种方法后面跟管道符过滤一下

centos7下载rpm包 centos7安装rpm软件_centos7下载rpm包_33


centos7下载rpm包 centos7安装rpm软件_centos7_34


rpm -qR 软件名

#查询已安装软件包所需要的依赖包

centos7下载rpm包 centos7安装rpm软件_centos7_35

2、未安装软件包

未安装的软件包的信息是从这个软件包中查询的,所以后面必须跟路径和具体名称

rpm -qpi 具体软件包名称

#查询未安装软件包的详情

centos7下载rpm包 centos7安装rpm软件_centos7下载rpm包_36


rpm -qpR 完整软件包

#查询未安装软件包所需要的依赖包

centos7下载rpm包 centos7安装rpm软件_rpm_37


和查询已安装软件包的命令是一样的,只需要在选项中加上p就是查询未安装的

如:rpm -qpl 等

六、升级rpm软件包

rpm -U 完整软件包名称
#升级rpm软件包
rpm -F 完整软件包名称
#更新rpm软件包

两者的不同在于

-F 更新软件包,如果未安装过软件,则放弃更新

-U 升级软件包,如果未安装过软件,则安装软件

centos7下载rpm包 centos7安装rpm软件_centos7_38


centos7下载rpm包 centos7安装rpm软件_rpm软件包_39


centos7下载rpm包 centos7安装rpm软件_linux_40

七、RPM的优缺点

优点:不需要配置,只要有软件包就可以安装

缺点:
1、需要确定系统的版本,架构找到匹配的软件包
2、安装前需要确定所需要的依赖包并且都要先下载安装好

建议:如果你的服务器可以联网,建议还是使用yum安装软件吧