欢迎光临
我们一直在努力

零基础吃透 CentOS 软件安装:rpm 与 yum 完整教程

前言

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

一、Linux 两大软件包体系

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

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

  • 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 包内部包含三类内容

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

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

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

  • 3. RPM 数字签名机制

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

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

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

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

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

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

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

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

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

    rpm -q vsftpd

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

    2)查看系统全部已安装软件

    rpm -qa
    # 过滤查询指定相关软件(示例:查找ssh相关包)
    rpm -qa | grep ssh

    3)查看软件完整详情(版本、安装时间、版权)

    rpm -qi openssh-server

    4)查看软件安装后生成的所有文件路径

    rpm -ql openssh-server

    5)只查看软件自带配置文件

    rpm -qc openssh-server

    6)只查看软件帮助手册文档

    rpm -qd openssh-server

    7)根据系统文件,反向查询所属软件包

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

    rpm -qf /etc/ssh/sshd_config

    8)查询软件所需依赖包

    rpm -qR httpd

    9)查看未安装的 rpm 包内部文件(参数 -p)

    rpm -qlp httpd-2.4.6-99.el7.x86_64.rpm

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

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

    rpm -V openssh-server

    • 无任何输出:软件所有文件完好;

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

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

    安装本地包(参数 -i,-v 打印详情,-h 显示进度条)

    rpm -ivh lrzsz-0.12.20-36.el7.x86_64.rpm

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

    卸载软件(参数 -e)

    # 正常卸载,有依赖占用会提示报错
    rpm -e lrzsz
    # 强制卸载(不推荐,容易破坏系统依赖关系)
    rpm -e –nodeps lrzsz

    修复重装损坏的软件包

    rpm –reinstall -vh lrzsz*.rpm

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

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

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

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

    rpm 和 yum 核心区别

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

    1. yum 查询命令

  • 查看软件详细介绍、版本、功能描述
  • yum info vsftpd

  • 列出软件,查看仓库可用版本
  • yum list vsftpd
    # 展示仓库所有历史版本,用于软件降级
    yum list vsftpd –showduplicates

  • 根据关键词搜索相关软件
  • yum search "web server"

  • 根据命令 / 文件,查询该文件归属哪个软件包
  • yum provides sar

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

    在线安装软件(-y 自动确认交互,无需手动输入 yes)

    yum install -y vsftpd

    仅下载 rpm 包,不执行安装

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

    # 方案1:强制重装下载
    yum reinstall vsftpd –downloadonly –downloaddir=/root
    # 方案2:专用下载工具 yumdownloader
    yum install yum-utils -y
    yumdownloader vsftpd –destdir=/root

    安装本地 rpm 包,自动补齐依赖

    yum localinstall ./xxx.rpm

    软件版本升级

    # 升级单个软件
    yum update vsftpd -y
    # 升级系统内全部软件到最新版本
    yum update -y

    软件版本降级

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

    yum downgrade -y httpd httpd-tools

    卸载软件

    yum remove -y vsftpd

    3. yum history 操作事务记录

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

  • 查看全部操作记录
  • yum history

  • 查看指定编号操作完整日志(示例查看第 2 条记录)
  • yum history info 2

  • 撤销指定操作(回滚,自动删除本次安装的所有软件)
  • yum history undo 4

  • 重新执行指定编号的操作
  • yum history redo 4

    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. 仓库配置文件存放路径

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

  • 各软件源独立配置:/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. 仓库常用运维命令

  • 查看当前系统已启用的仓库
  • yum repolist
    # 查看所有仓库,包含禁用状态的仓库
    yum repolist all

  • 启用 / 禁用指定仓库
  • yum-config-manager –enable epel-debuginfo
    yum-config-manager –disable epel-debuginfo

  • 更换源后,清理旧缓存并重建元数据
  • yum clean all && yum makecache

  • 一键下载阿里云 EPEL 扩展源(提供大量系统自带源没有的工具)
  • curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

  • 自定义添加软件仓库
    方式 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 结束写入。

    六、总结

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

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

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

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

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

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

  • 赞(0)
    未经允许不得转载:171主机测评 » 零基础吃透 CentOS 软件安装:rpm 与 yum 完整教程
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址