
技术弄巷
读完仅需
记得星标公众号

在CentOS/RHEL等红帽系列Linux系统中,RPM是最基础且核心的软件包管理方式,也是运维人员必备的基础技能。RPM软件包安装简单、操作便捷,无需编译源码即可快速部署软件,和源码包相比省去了复杂的编译步骤,极大提升软件安装效率。本文将详细讲解RPM软件包的基础介绍、rpm命令的安装/查询/卸载全套实操,包含参数详解与实操案例,所有内容无冗余、可直接复制粘贴使用,零基础也能轻松上手。

.rpm,特点是安装简单、无需编译,一键完成部署,适配红帽系(CentOS、RHEL)系统,是生产环境首选。.tar.gz、.tar.bz2,特点是安装复杂、需要编译,但灵活性极高,可自定义编译参数,适配所有Linux发行版。RPM软件包的文件名包含完整的软件信息,命名格式规范统一,示例:zlib-1.2.7-18.el7.x86_64.rpm
zlib→ 软件名1.2.7-18→ 软件版本号及发布版本el7→ 适配的系统版本(el7=CentOS7/RHEL7)x86_64→ 软件对应的系统平台(64位系统)
# 挂载系统镜像光盘,获取镜像内自带的RPM软件包(系统光盘是RPM包的常用来源)[root@localhost ~]# mount /dev/sr0 /mnt/mount:/dev/sr0 写保护,将以只读方式挂载# 查看镜像中所有的RPM软件包,所有包均存放在/mnt/Packages/目录下[root@localhost ~]# ls /mnt/Packages/
rpm是管理RPM软件包的专属命令,支持软件的安装、查询、卸载等所有操作,所有参数固定、命令可直接复用,以下是全功能实操。
# 安装命令完整格式:rpm -ivh 软件安装包完整名称/路径# 命令参数含义:# i :install,核心参数,代表安装软件# v :verbose,显示软件的详细安装过程# h :hash,以#号的形式实时显示软件的安装进度条# ========== 实操1:安装dhcp软件包 ==========[root@localhost ~]# rpm -ivh /mnt/Packages/dhcp-4.2.5-82.el7.centos.x86_64.rpm警告:/mnt/Packages/dhcp-4.2.5-82.el7.centos.x86_64.rpm:头V3 RSA/SHA256 Signature,密钥 ID f4a80eb5: NOKEY准备中...################################# [100%]正在升级/安装...1:dhcp-12:4.2.5-82.el7.centos################################# [100%]# ========== 实操2:安装bind软件包 ==========[root@localhost ~]# rpm -ivh /mnt/Packages/bind-9.11.4-26.P2.el7.x86_64.rpm警告:/mnt/Packages/bind-9.11.4-26.P2.el7.x86_64.rpm:头V3 RSA/SHA256 Signature,密钥 ID f4a80eb5: NOKEY准备中...################################# [100%]正在升级/安装...1:bind-32:9.11.4-26.P2.el7################################# [100%]# ========== 实操3:安装httpd软件包(含解决依赖报错) ==========# 直接安装出现依赖检测失败,提示缺少依赖包,无法完成安装[root@localhost ~]# rpm -ivh /mnt/Packages/httpd-2.4.6-95.el7.centos.x86_64.rpm警告:/mnt/Packages/httpd-2.4.6-95.el7.centos.x86_64.rpm:头V3 RSA/SHA256 Signature,密钥 ID f4a80eb5: NOKEY准备中...################################# [100%]错误:依赖检测失败:/etc/mime.types 被 httpd-2.4.6-95.el7.centos.x86_64 需要httpd-tools =2.4.6-95.el7.centos被 httpd-2.4.6-95.el7.centos.x86_64 需要# 加--nodeps参数强制安装,忽略所有依赖检测(强制安装,解决依赖报错)[root@localhost ~]# rpm -ivh --nodeps /mnt/Packages/httpd-2.4.6-95.el7.centos.x86_64.rpm警告:/mnt/Packages/httpd-2.4.6-95.el7.centos.x86_64.rpm:头V3 RSA/SHA256 Signature,密钥 ID f4a80eb5: NOKEY准备中...################################# [100%]正在升级/安装...1:httpd-2.4.6-95.el7.centos################################# [100%]
# ========== 子功能1:查询指定软件是否已安装 格式:rpm -q 软件名 ==========# 查询dhcp软件,显示完整包名,代表已安装[root@localhost ~]# rpm -q dhcpdhcp-4.2.5-82.el7.centos.x86_64# 查询samba软件,提示"未安装软件包",代表未安装[root@localhost ~]# rpm -q samba未安装软件包 samba# 拓展查询命令(实用)# rpm -qa :查询系统中已安装的所有RPM软件包(输出内容较多)# rpm -qa | grep "dhcp" :过滤查询,只显示包含dhcp关键字的已安装软件# ========== 子功能2:查询系统文件对应的所属软件包 格式:rpm -qf 文件绝对路径 ==========# 先通过which命令查询命令对应的绝对路径[root@localhost ~]# which vim/usr/bin/vim# 查询该文件由哪个RPM软件包安装生成[root@localhost ~]# rpm -qf /usr/bin/vimvim-enhanced-7.4.629-7.el7.x86_64# ========== 子功能3:查询指定软件安装后生成的所有文件 格式:rpm -ql 软件名 ==========# rpm -ql coreutils# ========== 补充:重复验证软件是否安装 ==========# rpm -qa dhcp
# 卸载命令完整格式:rpm -e 软件名 (只需写软件名,无需写完整包名和版本)# 命令参数含义:e :erase,代表卸载、移除软件# 第一步:先查询要卸载的软件是否已安装,确认软件名[root@localhost ~]# rpm -q dhcpdhcp-4.2.5-82.el7.centos.x86_64# 第二步:执行卸载操作[root@localhost ~]# rpm -e dhcp# 第三步:验证卸载结果,查询软件已无安装信息,代表卸载成功[root@localhost ~]# rpm -q dhcp未安装软件包 dhcp# 拓展卸载命令:强制卸载忽略依赖 格式:rpm -e --nodeps 软件名# rpm -e --nodeps coreutils

