Linux新手入门:RPM&YUM软件包管理全程实操
一、软件包管理基础认知
1.1 Windows与Linux软件安装区别
1.1.1 Windows软件管理方式
系统注册表安装:通过控制面板-程序和功能安装,软件信息写入系统注册表,可统一卸载管理
绿色免安装软件:无需安装,解压即用,无注册表信息,如U盘启动工具rufus
软件合法来源:官方应用商城、软件官方官网(微信、QQ、浏览器等)

1.1.2 Linux两大主流包管理体系
Linux不同发行版对应不同软件包格式,主流分为两大阵营,新手只需重点掌握RPM体系!

RPM包体系(RedHat系):本文重点学习,企业服务器主流
适用系统:RHEL、Fedora、CentOS、CentOS Stream、Rocky、OEL
核心工具:rpm(底层命令)、yum(上层依赖解决工具)
DEB包体系(Debian系)
适用系统:Debian、Ubuntu、Kali Linux
核心工具:dpkg、apt
小众体系:ArchLinux、Gentoo等,服务器极少使用
二、RPM包深度解析(核心基础)
2.1 RPM包文件名标准格式
RPM是RedHat官方开发的软件包管理规范,统一了Linux软件安装格式,CentOS所有官方软件均为RPM格式。
标准格式:name-version-release.architecture.rpm
实战示例:lrzsz-0.12.20-36.el7.x86_64.rpm
逐段拆解(新手必记):
name(软件名):lrzsz,文件传输工具名称
version(源码版本):0.12.20,软件官方原始版本号
release(发行版编译号):36.el7,CentOS7系统编译打包版本,由厂商定义
architecture(硬件架构):x86_64,适配64位服务器
noarch:通用架构,不限CPU,所有设备可安装
x86_64:64位桌面/服务器架构
aarch64:ARM架构(国产服务器、手机架构)
2.2 RPM包三大核心组成
每一个RPM安装包都包含3部分内容,缺一不可:
程序文件:软件运行所需的二进制程序、配置文件、依赖库
元数据信息:软件名称、版本、依赖关系、许可证、更新日志、架构信息
执行脚本:安装、更新、卸载前后自动执行的脚本,完成环境初始化
2.3 RPM包安全校验原理
官方RPM包均经过GPG非对称加密签名,防止软件被篡改、植入病毒,保障服务器安全。
2.3.1 非对称加密简易理解
私钥:厂商自留,用于给软件包签名加密
公钥:公开分发,服务器用于校验软件签名合法性
核心流程:厂商私钥签名 → 用户公钥校验 → 校验通过才可安装,失败则拒绝安装
2.4 RPM安装升级核心规则
新手极易踩坑的规则,提前规避报错:
普通软件默认只能安装一个版本,高版本会覆盖低版本
kernel内核是唯一例外:可多版本共存,防止新内核无法启动,旧内核可兜底开机
软件升级无需逐级更新,可直接安装最新版
RPM升级会自动删除旧程序,默认保留用户自定义配置文件,避免配置丢失
三、RPM命令全套实操
rpm是底层软件包工具,可实现所有软件本地操作,缺点是无法自动解决依赖,适合本地包精准操作。
3.1 RPM查询操作(最常用)
核心作用:查询已安装软件信息、文件归属、依赖、配置文件等,排错必备
3.1.1 命令基础语法
rpm {-q|--query} [select-options] [query-options] select-options 筛选条件:-a所有包、-f文件归属、-p本地包文件 query-options 查询详情:-i信息、-l文件列表、-c配置文件、-d帮助文档3.1.2 实操案例(可直接复制执行)
# 1.查询系统所有已安装软件包[root@centos7 ~]# rpm -qa# 2.查询指定软件是否安装(无输出=未安装)[root@centos7 ~]# rpm -q httpd未安装软件包 httpd[root@centos7 ~]# rpm -q kernelkernel-3.10.0-1160.71.1.el7.x86_64# 3.查询软件详细元数据信息(版本、许可证、厂商、功能介绍)[root@centos7 ~]# rpm -q coreutils -i# 4.查询软件安装的所有文件路径(程序、配置、文档)[root@centos7 ~]# rpm -q openssh-server -l# 5.仅查询软件的配置文件(运维重点关注)[root@centos7 ~]# rpm -q openssh-server -c# 6.仅查询软件的帮助文档、手册文件[root@centos7 ~]# rpm -q openssh-server -d# 7.查询某个系统文件属于哪个软件包(文件丢失排错必备)[root@centos7 ~]# rpm -q -f /etc/ssh/sshd_config# 8.查询软件安装执行的脚本[root@centos7 ~]# rpm -q openssh-server --scripts# 9.查询软件更新日志[root@centos7 ~]# rpm -q openssh-server --changelog3.1.3 扩展:下载官方RPM包并查询本地包信息
# 安装下载工具,下载httpd官方安装包[root@centos7 ~]# yum install -y yum-utils[root@centos7 ~]# yumdownloader httpd# 查询本地未安装的RPM包配置文件信息(-p参数作用)[root@centos7 ~]# rpm -q -p httpd-2.4.6-99.el7.centos.1.x86_64.rpm -c3.2 RPM验证操作
核心作用:校验已安装软件文件是否被修改、删除、权限变更,排查文件篡改、损坏问题
3.2.1 基础语法
rpm {-V|--verify} [select-options] [verify-options]3.2.2 实操案例
# 1.校验openssh-server软件完整性(无输出=文件完好无修改)[root@centos7 ~]# rpm -V openssh-server# 2.修改配置文件后再次校验,会提示文件变更[root@centos7 ~]# sed -i 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config[root@centos7 ~]# rpm -V openssh-server# 3.删除配置文件,校验会提示文件缺失[root@centos7 ~]# mv /etc/ssh/sshd_config .[root@centos7 ~]# rpm -V openssh-server# 4.恢复文件,校验恢复正常[root@centos7 ~]# mv sshd_config /etc/ssh/sshd_config3.3 RPM安装、卸载、重装
3.3.1 基础语法
# 安装语法 rpm {-i|--install} [install-options] PACKAGE_FILE ... # 卸载语法 rpm {-e|--erase} PACKAGE_NAME # 重装语法 rpm {--reinstall} [install-options] PACKAGE_FILE ...3.3.2 完整实操
# 1.下载lrzsz传输工具RPM包[root@centos7 ~]# repoquery --location lrzsz[root@centos7 ~]# wget http://mirrors.aliyun.com/centos7/os/x86_64/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm# 2.普通安装[root@centos7 ~]# rpm -i lrzsz-0.12.20-36.el7.x86_64.rpm# 3.友好安装(显示进度条,新手推荐 -vh)[root@centos7 ~]# rpm -ivh lrzsz-0.12.20-36.el7.x86_64.rpm# 4.卸载软件[root@centos7 ~]# rpm -e lrzsz# 5.友好卸载[root@centos7 ~]# rpm -evh lrzsz# 6.重新安装(修复损坏文件,保留配置)[root@centos7 ~]# rpm --reinstall -vh lrzsz*3.3.3 依赖报错说明
使用rpm安装软件最大痛点:不会自动安装依赖,缺失依赖直接报错,如下所示(后续yum可完美解决)
# 安装httpd会出现依赖检测失败[root@centos7 ~]# rpm -ivh httpd-2.4.6-99.el7.centos.1.x86_64.rpm错误:依赖检测失败: /etc/mime.types 被 httpd-2.4.6-99.el7.centos.1.x86_64 需要 httpd-tools=2.4.6-99.el7.centos.1 被 httpd-2.4.6-99.el7.centos.1.x86_64 需要3.4 RPM包文件提取(无需安装直接拿文件)
适用场景:仅需要RPM包中个别文件,不想完整安装软件,可直接提取
3.4.1 Windows提取方式
使用360压缩、WinRAR等压缩工具,直接打开RPM包,可视化提取所需文件
3.4.2 Linux命令提取(两种方法)
# 方法一:分步提取# 1.将RPM包转为cpio归档格式[root@centos7 ~]# rpm2cpio httpd-2.4.6-99.el7.centos.1.x86_64.rpm > httpd.cpio# 2.查看归档内所有文件[root@centos7 ~]# cpio -t < httpd.cpio# 3.精准提取指定配置文件[root@centos7 ~]# cpio -id ./etc/httpd/conf/httpd.conf < httpd.cpio# 方法二:一步提取所有文件(最常用)[root@centos7 ~]# rpm2cpio httpd-2.4.6-99.el7.centos.1.x86_64.rpm | cpio -id '*'四、YUM包管理
4.1 YUM与RPM区别
RPM:底层工具,仅能操作本地包,不解决依赖,适合精准操作
YUM:上层工具,基于RPM开发,可联网从仓库下载软件,自动检测、下载、安装所有依赖,生产环境首选
4.2 YUM核心命令实操大全
4.2.1 help 查看帮助
# 查看yum所有命令用法[root@centos7 ~]# yum help4.2.2 info 查看软件详情
# 查看仓库中httpd软件版本、简介、官网、协议信息[root@centos7 ~]# yum info httpd4.2.3 list 查看软件清单
# 查看所有http开头的软件包[root@centos7 ~]# yum list 'http*'# 查看软件所有可安装版本(版本切换必备)[root@centos7 ~]# yum list httpd --showduplicates4.2.4 search 关键字搜索软件
# 搜索包含web server关键字的所有软件[root@centos7 ~]# yum search 'web server'# 全字段搜索(简介+描述+名称)[root@centos7 ~]# yum search all 'web server'4.2.5 provides 查询文件所属软件包
核心用途:系统缺少某个命令,不知道装哪个软件,用此命令查询
# 查询sar命令属于哪个软件包[root@centos7 ~]# yum provides sar# 模糊查询[root@centos7 ~]# yum provides '*bin/sar'# 安装对应软件[root@centos7 ~]# yum install -y sysstat4.2.6 install 安装软件
# 常规安装vsftpd服务[root@centos7 ~]# yum install vsftpd -y# 仅下载不安装,保存到指定目录(离线部署必备)[root@centos7 ~]# yum install vsftpd --downloadonly --downloaddir=/root/4.2.7 localinstall 安装本地RPM包
区别rpm命令:yum本地安装可以自动解决依赖,完美规避rpm依赖报错
[root@centos7 ~]# yum localinstall ./vsftpd-3.0.2-29.el7_9.x86_64.rpm4.2.8 downgrade 软件版本降级
# 降级vsftpd到指定旧版本[root@centos7 ~]# yum downgrade -y vsftpd-3.0.2-28.el7# 重点:关联依赖包需同步降级(否则报错)[root@centos7 ~]# yum downgrade -y httpd-tools-2.4.6-97.el7.centos httpd-2.4.6-97.el7.centos4.2.9 update 软件升级
# 升级指定软件[root@centos7 ~]# yum update vsftpd-3.0.2-29.el7_9 -y# 升级系统所有软件到最新版本(定期维护使用)[root@centos7 ~]# yum update -y4.2.10 remove 卸载软件
# 卸载vsftpd及关联依赖[root@centos7 ~]# yum remove -y vsftpd4.3 YUM事务历史记录
yum会记录所有安装、卸载、降级操作,支持查看、重做、回滚操作,改错神器!
# 1.查看所有yum操作历史[root@centos7 ~]# yum history# 2.查看指定ID操作的详细记录[root@centos7 ~]# yum history info 2# 3.撤销指定操作(回滚)[root@centos7 ~]# yum history undo 4# 4.重做指定操作[root@centos7 ~]# yum history redo 44.4 YUM软件包组管理(批量安装)
针对环境包组(桌面环境、开发工具),一键批量安装所有依赖软件
# 查看所有软件包组[root@centos7 ~]# yum grouplist# 查看指定包组详情[root@centos7 ~]# yum groupinfo 'Server with GUI'# 安装桌面环境包组[root@centos7 ~]# yum groupinstall 'Server with GUI' -y# 卸载软件包组[root@centos7 ~]# yum groupremove mariadb-client -y五、YUM仓库配置与管理
5.1 YUM核心配置文件详解
yum主配置文件:/etc/yum.conf,分为全局main配置和仓库独立配置
[root@centos7 ~]# cat /etc/yum.conf[main]cachedir=/var/cache/yum/$basearch/$releasever# 软件缓存目录keepcache=0# 不保留安装缓存debuglevel=2# 日志调试级别logfile=/var/log/yum.log# yum操作日志文件exactarch=1# 严格匹配系统架构obsoletes=1# 允许版本替换更新gpgcheck=1# 默认开启软件签名校验plugins=1# 开启插件installonly_limit=5# 仅保留5个内核版本bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yumdistroverpkg=centos-release5.2 仓库基础管理操作
# 1.查看已启用的仓库[root@centos7 ~]# yum repolist# 2.查看所有仓库(包含禁用仓库)[root@centos7 ~]# yum repolist all# 3.启用指定仓库[root@centos7 ~]# yum-config-manager --enable epel-debuginfo# 4.禁用指定仓库[root@centos7 ~]# yum-config-manager --disable epel-debuginfo5.3 仓库缓存管理
修改仓库、网络异常后,需清理重建缓存,保证软件列表正常加载
# 清理所有缓存[root@centos7 ~]# yum clean all# 重新生成仓库缓存[root@centos7 ~]# yum makecache5.4 常用第三方仓库部署
5.4.1 EPEL扩展仓库(必备)
系统默认仓库软件有限,EPEL仓库提供大量拓展免费软件,新手必装
# 替换为阿里云EPEL源(国内高速)[root@centos7 ~]# curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo5.4.2 Kubernetes/Docker仓库部署
# 添加Kubernetes仓库[root@centos7 ~]# yum-config-manager --add-repo=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/# 添加Docker官方仓库[root@centos7 ~]# cat << 'EOF' > /etc/yum.repos.d/docker-ce.repo[docker-ce-stable]name=Docker CE Stable -$basearchbaseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stableenabled=1gpgcheck=0EOF六、源码编译安装实操(高级部署)
YUM/RPM安装的是适配系统的稳定版,版本可能滞后,源码安装可安装最新版本软件
6.1 源码安装Nginx(Web服务)
6.1.1 软件介绍
Nginx是高性能反向代理、Web服务器,占用资源少、并发能力强,企业主流Web服务
6.1.2 完整编译步骤
# 1.安装编译依赖工具[root@centos7 ~]# yum install gcc make pcre-devel zlib-devel -y# 2.下载最新稳定版源码包[root@centos7 ~]# wget https://nginx.org/download/nginx-1.24.0.tar.gz# 3.解压源码包[root@centos7 ~]# tar -xf nginx-1.24.0.tar.gz# 4.进入目录,配置安装路径[root@centos7 ~]# cd nginx-1.24.0/[root@centos7 nginx-1.24.0]# ./configure --prefix=/usr/local/nginx# 5.编译并安装(耗时稍长,耐心等待)[root@centos7 nginx-1.24.0]# make && make install# 6.配置全局环境变量[root@centos7 ~]# echo 'export PATH=$PATH:/usr/local/nginx/sbin/' >> ~/.bashrc[root@centos7 ~]# source ~/.bashrc6.1.3 Nginx服务管理
# 启动服务[root@centos7 ~]# nginx# 验证启动成功[root@centos7 ~]# curl -s http://localhost | grep Thank# 重载配置(不中断服务)[root@centos7 ~]# nginx -s reload# 优雅停止(处理完请求再关闭)[root@centos7 ~]# nginx -s quit# 强制停止[root@centos7 ~]# nginx -s stop6.1.4 配置Systemd开机自启
# 创建服务文件[root@centos7 ~]# vim /etc/systemd/system/nginx.service服务文件内容:
[Unit] Description=Nginx server daemon [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit [Install] WantedBy=multi-user.target# 重载服务、设置开机自启并启动[root@centos7 ~]# systemctl daemon-reload[root@centos7 ~]# systemctl enable nginx.service --now七、企业级自建YUM仓库实操
适用场景:内网服务器无外网,无法联网下载软件,可自建本地YUM仓库,实现内网批量部署软件
7.1 自建仓库完整流程
准备所需RPM软件包
创建仓库索引文件
通过Web服务发布仓库
客户端配置仓库并验证
7.2 详细实操步骤
# 1.准备软件包存放目录[root@server ~]# mkdir -p /var/www/html/tools/Packages[root@server ~]# cd /root# 2.下载所需软件包(包含依赖)[root@server ~]# yumdownloader vim open-vm-tools vsftpd lrzsz bash-completion# 3.移动所有包到仓库目录[root@server ~]# mv *.rpm /var/www/html/tools/Packages/# 4.安装仓库索引工具[root@server ~]# yum install -y createrepo# 5.生成仓库索引信息[root@server ~]# createrepo /var/www/html/tools/# 6.安装httpd发布仓库网页[root@server ~]# yum install -y httpd[root@server ~]# systemctl enable httpd --now# 7.关闭防火墙和SELinux(内网测试环境)[root@server ~]# systemctl disable firewalld.service --now[root@server ~]# setenforce 07.3 客户端配置与验证
# 1.备份原有官方仓库[root@client ~]# mkdir /etc/yum.repos.d/old[root@client ~]# mv /etc/yum.repos.d/*repo /etc/yum.repos.d/old# 2.新建本地自建仓库配置[root@client ~]# cat << 'EOF' > /etc/yum.repos.d/tools.repo[tools]name=centos7 tools from HYC.cloudbaseurl=http://server.laoma.cloud/tools/enabled=1gpgcheck=0EOF# 3.测试安装软件(内网无外网也可安装)[root@client ~]# yum install -y vim7.4 同步远程仓库到本地
可同步官方仓库所有软件到本地,搭建完整本地镜像仓库
# 同步仓库所有包和元数据[root@client ~]# reposync --repoid=tools --download-metadata# 重新生成索引[root@client ~]# createrepo tools八、全文核心知识点总结
包体系区分:RPM适用于CentOS/RHEL,DEB适用于Ubuntu/Debian,企业运维优先掌握RPM+YUM
RPM核心:擅长本地包精准操作,可查询、验证、提取文件,缺点是无法自动解决依赖
YUM核心优势:自动解决软件依赖,支持在线安装、升级、降级、批量部署,生产首选
仓库配置:默认官方仓库软件有限,必须部署EPEL拓展仓库,满足日常运维需求
源码安装场景:需最新版软件、自定义编译参数时使用,步骤:安装依赖→解压→configure→make&make install
自建仓库价值:解决内网无外网环境的软件部署问题,适配企业内网服务器集群
安全规范:所有软件优先官方/阿里云镜像源,避免第三方非法源,防止软件植入后门