零基础吃透 CentOS 软件安装:rpm 与 yum 完整教程
2026/7/29 7:09:52 网站建设 项目流程

前言

在 Windows 系统里,我们安装软件会下载.exe安装包;CentOS、RHEL 这类 Linux 系统,则统一使用.rpm格式软件包。本文完整讲解底层工具rpm、上层工具yum,以及软件仓库配置,搭配大量实操命令,逻辑清晰,看完就能上手操作。

一、Linux 两大软件包体系

主流 Linux 分为两大阵营,软件包互不通用:

  1. RPM 系列(本文讲解)
    代表系统:CentOS7、RHEL、Rocky Linux、Fedora
    软件包后缀:.rpm
    配套工具:底层rpm命令、自动管理工具yum

  2. DEB 系列(简单了解)
    代表系统:Ubuntu、Debian、Kali
    软件包后缀:.deb
    配套工具:apt

简单类比:
rpm = Windows 离线安装包,需要手动处理配套依赖;
yum = 电脑自带应用商店,联网一键安装,自动补齐所有需要的配套程序。

二、RPM 软件包基础认知

1. RPM 包名称结构

标准格式:软件名-原版版本-系统打包版本.架构.rpm
示例:lrzsz-0.12.20-36.el7.x86_64.rpm

  • lrzsz:软件名称

  • 0.12.20:软件官方原始版本号

  • 36.el7:打包版本,el7代表适配 CentOS7 系统

  • x86_64:64 位服务器架构;noarch代表通用架构,所有机器都能装

2. 一个 RPM 包内部包含三类内容

  1. 程序本体:软件运行所需二进制程序、配置文件、帮助文档;

  2. 元数据信息:记录软件版本、依赖、版权、开发厂商等信息;

  3. 内置执行脚本:安装、升级、卸载时自动运行的脚本。

3. RPM 数字签名机制

软件厂商会使用一对公私钥管理安装包安全:

  1. 厂商用私钥给 rpm 包签名盖章;

  2. 用户服务器存放厂商公钥,安装时校验包是否被篡改、植入恶意程序;
    日常使用阿里镜像源时,可设置gpgcheck=0临时关闭校验,简化操作。

4. 特殊规则:内核支持多版本共存

绝大多数软件同一时间只能保留一个版本,升级会直接覆盖旧文件;
唯独kernel内核包可以同时安装多个版本。如果更新内核后服务器无法启动,开机时可以切换旧内核正常进入系统。

三、rpm 底层命令详解(离线本地包工具)

rpm工具仅能操作本地已经下载好的 rpm 文件,不会联网、不会自动安装依赖,缺少依赖时直接报错,适合无网络离线场景。

1. 查询类命令(参数-q,日常高频使用)

1)查询单个软件是否安装
rpm-qvsftpd

输出软件完整包名 = 已安装;提示 “未安装软件包”= 系统不存在该软件。

2)查看系统全部已安装软件
rpm-qa# 过滤查询指定相关软件(示例:查找ssh相关包)rpm-qa|grepssh
3)查看软件完整详情(版本、安装时间、版权)
rpm-qiopenssh-server
4)查看软件安装后生成的所有文件路径
rpm-qlopenssh-server
5)只查看软件自带配置文件
rpm-qcopenssh-server
6)只查看软件帮助手册文档
rpm-qdopenssh-server
7)根据系统文件,反向查询所属软件包

修改配置文件后,想知道文件属于哪个软件时使用:

rpm-qf/etc/ssh/sshd_config
8)查询软件所需依赖包
rpm-qRhttpd
9)查看未安装的 rpm 包内部文件(参数-p
rpm-qlphttpd-2.4.6-99.el7.x86_64.rpm

2. 校验软件完整性(参数-V

用于检测软件文件是否被删除、修改、修改权限:

rpm-Vopenssh-server
  • 无任何输出:软件所有文件完好;

  • 输出字符 + 文件路径:代表对应文件被改动、丢失。

3. 安装、卸载、重装本地 rpm 包

安装本地包(参数-i-v打印详情,-h显示进度条)
rpm-ivhlrzsz-0.12.20-36.el7.x86_64.rpm

缺点:缺少依赖直接报错,需要手动下载对应依赖包。

卸载软件(参数-e
# 正常卸载,有依赖占用会提示报错rpm-elrzsz# 强制卸载(不推荐,容易破坏系统依赖关系)rpm-e--nodepslrzsz
修复重装损坏的软件包
rpm--reinstall-vhlrzsz*.rpm

4. 不安装,仅提取 rpm 包内文件

# 一步提取包内全部文件rpm2cpio 包名.rpm|cpio-id

四、yum 软件管理工具(线上安装首选)

yum是基于 rpm 封装的上层工具,核心优势:联网自动下载软件,自动解析并安装全部依赖,日常部署软件优先使用 yum。

rpm 和 yum 核心区别

工具是否联网依赖处理能力使用场景
rpm不联网无,缺依赖直接报错离线本地 rpm 包
yum需要联网自动下载所有依赖服务器常规软件安装

1. yum 查询命令

  1. 查看软件详细介绍、版本、功能描述
yum info vsftpd
  1. 列出软件,查看仓库可用版本
yum list vsftpd# 展示仓库所有历史版本,用于软件降级yum list vsftpd--showduplicates
  1. 根据关键词搜索相关软件
yum search"web server"
  1. 根据命令 / 文件,查询该文件归属哪个软件包
yum provides sar

2. 安装、下载、升级、降级、卸载

在线安装软件(-y自动确认交互,无需手动输入 yes)
yuminstall-yvsftpd
仅下载 rpm 包,不执行安装

如果软件已经安装,直接执行会无法下载,两种稳定方案:

# 方案1:强制重装下载yum reinstall vsftpd--downloadonly--downloaddir=/root# 方案2:专用下载工具 yumdownloaderyuminstallyum-utils-yyumdownloader vsftpd--destdir=/root
安装本地 rpm 包,自动补齐依赖
yum localinstall ./xxx.rpm
软件版本升级
# 升级单个软件yum update vsftpd-y# 升级系统内全部软件到最新版本yum update-y
软件版本降级

将新版软件换回旧版本,依赖包必须同步降级,否则会报依赖错误:

yum downgrade-yhttpd httpd-tools
卸载软件
yum remove-yvsftpd

3. yum history 操作事务记录

yum 会保存每一次安装、卸载、降级操作,每条操作分配唯一数字 ID,支持回滚、重做。

  1. 查看全部操作记录
yumhistory
  1. 查看指定编号操作完整日志(示例查看第 2 条记录)
yumhistoryinfo2
  1. 撤销指定操作(回滚,自动删除本次安装的所有软件)
yumhistoryundo4
  1. 重新执行指定编号的操作
yumhistoryredo4

4. 软件组批量管理

软件组是一套配套工具合集,例如图形桌面、开发工具,一键批量安装,无需逐个下载软件。

# 列出系统所有可用软件组yum grouplist# -v 参数,展示组内包含的所有软件包yum grouplist-v# 查看单个软件组详情yum groupinfo"Server with GUI"# 安装图形桌面环境yum groupinstall"Server with GUI"-y# 卸载指定软件组yum groupremove"Server with GUI"

补充:若执行组命令提示无组信息,执行yum groups mark convert修复 yum 组数据库。

五、YUM 软件仓库(repo 源)完整讲解

yum 下载软件的来源就是 yum 仓库(repo 源),国内推荐阿里云镜像源,下载速度远快官方源。

1. 仓库配置文件存放路径

  1. 全局主配置文件:/etc/yum.conf,控制 yum 全局行为;

  2. 各软件源独立配置:/etc/yum.repos.d/目录下所有.repo文件。

/etc/yum.conf 核心配置参数

[main] plugins=1 # 1开启yum插件,0关闭插件,消除执行yum时的Loading提示 keepcache=0 # 0安装完成后删除rpm缓存;1永久保留下载的安装包 gpgcheck=1 # 全局默认开启安装包签名校验 cachedir=/var/cache/yum # rpm缓存文件存放目录

一键关闭 yum 开头插件提示的命令:

sed-i's/plugins=1/plugins=0/g'/etc/yum.conf

2. repo 源文件标准格式

以阿里云 EPEL 扩展源为例:

[epel] name=Extra Packages for Enterprise Linux 7 - $basearch baseurl=http://mirrors.aliyun.com/epel/7/$basearch enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

参数说明:

  • [epel]:仓库唯一标识名称;

  • name:仓库备注名称,仅用于展示;

  • baseurl:软件包下载地址;

  • enabled=1:启用该仓库;enabled=0:禁用仓库;

  • gpgcheck=0:关闭安装包安全校验;1开启校验。

3. 仓库常用运维命令

  1. 查看当前系统已启用的仓库
yum repolist# 查看所有仓库,包含禁用状态的仓库yum repolist all
  1. 启用 / 禁用指定仓库
yum-config-manager--enableepel-debuginfo yum-config-manager--disableepel-debuginfo
  1. 更换源后,清理旧缓存并重建元数据
yum clean all&&yum makecache
  1. 一键下载阿里云 EPEL 扩展源(提供大量系统自带源没有的工具)
curl-s-o/etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  1. 自定义添加软件仓库
    方式 1:自动生成 repo 文件
yum-config-manager --add-repo=仓库地址

方式 2:手动写入仓库配置(多行写入语法)

cat<<'EOF'>/etc/yum.repos.d/docker-ce.repo[docker-ce-stable] name=Docker CE Stable - $basearch baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable enabled=1 gpgcheck=0 EOF

补充:输入cat << 'EOF' > 文件后出现>提示符,代表等待输入多行配置,输入完成后单独一行敲EOF结束写入。

六、总结

  1. rpm是底层包工具,仅支持本地离线包,不会自动处理依赖,适合无网络环境;

  2. yum基于 rpm 开发,联网自动下载软件并补齐全部依赖,是日常安装软件的主流工具;

  3. yum 通过 repo 仓库获取软件,更换国内镜像源可以大幅提升下载速度;

  4. yum history 记录所有软件变更操作,支持回滚、重做,方便故障恢复;

  5. 软件组功能可以批量安装桌面、开发工具等成套环境,简化服务器部署;

  6. 熟练掌握仓库配置、缓存清理、源替换,是运维管理 CentOS7 的基础能力。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询