Linux - 10 软件包管理(rpm,Yum)
1)RPM 底层包管理格式
RPM是CentOS、RHEL等系统的底层包管理格式,对应的rpm命令可直接操作.rpm包,不过不具备自动解决依赖的能力。而yum/dnf是基于RPM封装的工具,能弥补依赖处理的短板。下面按功能分类梳理各命令,明确不同场景下的用法:
一、RPM原生命令(直接操作.rpm包)
这类命令是操作RPM包的基础,适合离线场景或精准排查问题,但需手动处理依赖关系。
1. rpm -i:安装本地.rpm包
- 一般使用 rmp -ivh
- 核心参数:
-v显示安装的详细过程;-h用#标识安装进度条;--force强制安装,可覆盖已安装的冲突版本。 - 典型示例:正常安装nginx的.rpm包,可执行
sudo rpm -ivh nginx-xxx.rpm;若安装时出现版本冲突,需强制覆盖安装,执行sudo rpm -ivh --force nginx-xxx.rpm。 - 适用场景:无网络环境下离线安装单个.rpm格式软件,比如服务器无法联网时,提前下载好软件的.rpm包进行本地安装。

2. rpm -e:卸载已安装的RPM软件
- 核心参数:
--nodeps忽略依赖关系强制卸载,此参数慎用。 - 典型示例:常规卸载已安装的nginx,执行
sudo rpm -e nginx;若卸载时因依赖报错无法执行,紧急情况下可执行sudo rpm -e --nodeps nginx跳过依赖检查。 - 适用场景:删除通过RPM方式安装的软件。需注意,
--nodeps可能导致其他依赖该软件的程序异常,仅在排查问题等特殊情况使用。
3. rpm -q:查询已安装的RPM软件相关信息
- 核心参数:
-a查询系统中所有已安装的RPM包;-i显示目标软件包的详细信息(如版本、发布日期、开发者等);-l列出软件包安装的所有文件路径;-f查询指定文件属于哪个RPM包。 - 典型示例:想确认nginx是否安装,执行
rpm -q nginx;查看nginx安装的所有文件位置,执行rpm -ql nginx;若想知道/bin/ls这个文件来自哪个安装包,执行rpm -qf /bin/ls。 - 适用场景:验证软件是否成功安装、定位软件安装目录、排查文件归属问题,比如系统文件丢失时,可查询该文件对应的软件包来修复。

4. rpm -U:升级RPM软件包
- 核心参数:
-vh显示升级的详细过程和进度条,方便查看升级状态。 - 典型示例:将已安装的nginx升级到新版本,执行
sudo rpm -Uvh nginx-new-xxx.rpm,若系统中未安装nginx,该命令会自动完成安装。 - 适用场景:需要将RPM安装的软件更新到新版本,无需先卸载旧版本,操作更便捷。
5. rpm -V:校验已安装软件的文件完整性
- 无核心额外参数,直接跟软件包名即可。
- 典型示例:怀疑nginx的安装文件被篡改或误删,执行
rpm -V nginx,若输出异常字符,代表对应文件存在修改、丢失等问题。 - 适用场景:系统排查故障时,校验软件文件是否保持安装时的原始状态,比如服务器被入侵后,可通过此命令检查关键软件是否被篡改。
二、RPM关联优化命令(自动解决依赖)
这类命令基于RPM底层,优化了依赖处理能力,日常使用比纯rpm命令更高效,是CentOS等系统中常用的包管理方式。
- yum localinstall:安装本地.rpm包并自动解决依赖
- 核心参数:
-y自动确认安装过程中的所有提示,无需手动输入y确认。 - 典型示例:安装本地下载的xxx.rpm包,且需要自动补全依赖,执行
sudo yum localinstall -y xxx.rpm。 - 适用场景:相比
rpm -i,适合安装本地.rpm包但该包依赖其他软件的场景,无需手动逐一安装依赖包,大幅减少操作步骤。
- 核心参数:
- dnf install:RHEL 8+/CentOS 8+专属,处理本地/仓库RPM包
- 核心参数:
-y自动确认安装操作,简化流程。 - 典型示例:在CentOS 8及以上系统中,安装本地的xxx.rpm包,执行
sudo dnf install -y xxx.rpm,既支持本地包安装,也能直接安装仓库中的软件,且依赖处理速度比yum更快。 - 适用场景:CentOS 8及以上系统中,替代yum处理本地.rpm包或仓库软件安装,日常批量安装、升级软件时优先使用,效率更高且不易因依赖问题报错。
- 核心参数:
关键注意事项
- 依赖问题:rpm 命令最大短板是不自动解决依赖,比如安装A包需先装B包,直接用
rpm -i A.rpm会报错,此时可改用yum localinstall自动补全依赖; - 强制操作慎用:
--force(强制安装)和--nodeps(忽略依赖卸载)可能破坏系统依赖关系,仅在紧急排查时使用; - 适用场景:rpm 命令适合离线安装单个.rpm包、校验软件完整性、查询文件归属等场景;日常批量安装/升级建议优先用 yum/dnf,效率更高且不易出错。
2)Yum 仓库配置
yum(Yellowdog Updater Modified)是 CentOS 7 自带的包管理工具,基于 RPM 底层,核心优势是 自动解决依赖关系,无需手动处理包之间的依赖依赖,日常安装、升级、卸载软件优先用它。
一、基础配置(可选,解决仓库相关问题)
1. 更换国内源(推荐,提升下载速度)
CentOS 7 官方源可能速度慢,可替换为阿里云源(步骤简单):
# 1. 备份默认源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak #不会保留CentOS-Base.repo
# 2. 下载阿里云 CentOS 7 源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 3. 清理并生成缓存(让新源生效)
yum clean all && yum makecache
2. 常用缓存操作(解决“找不到包”“版本旧”问题)
yum clean all # 清理过期缓存
yum makecache # 生成新的软件包索引缓存(加速后续查询/安装)
二、核心功能:安装软件
1. 安装仓库中的软件(最常用)
# 语法:yum install -y 软件包名
yum install -y nginx # 安装 Nginx 服务(自动解决依赖,包括你已有的 nginx-filesystem)
yum install -y mysql-server # 安装 MySQL 服务
yum install -y vim wget # 同时安装多个软件(用空格分隔)
- 参数
-y:自动确认所有安装提示(不用手动输y,适合脚本或快速操作); - 适用场景:安装系统仓库中存在的软件,比如 Web 服务(Nginx/Apache)、数据库(MySQL)、工具(vim、git)等。
2. 安装本地 RPM 包(并自动解决依赖)
如果你下载了 .rpm 包到本地,用 yum localinstall 比 rpm -i 更方便(自动补依赖):
# 语法:yum localinstall -y 本地RPM包路径
yum localinstall -y /root/nginx-1.20.1-10.el7.x86_64.rpm
- 适用场景:离线环境或手动下载的 RPM 包安装(比如特殊版本软件)。
3. 重新安装软件(修复损坏的安装)
如果软件文件被误删或篡改,可重新安装还原:
yum reinstall -y nginx # 重新安装 Nginx,覆盖损坏文件
三、核心功能:查询软件
1. 搜索仓库中的软件(确认包名)
不知道软件的准确包名时,用 search 搜索关键词:
yum search nginx # 搜索所有包含“nginx”关键词的软件包
yum search mysql # 搜索 MySQL 相关软件(会显示 mysql-server、mysql-client 等)
2. 查看已安装的软件
# 查看所有已安装软件(太多,通常搭配 grep 过滤)
yum list installed | grep nginx # 查看已安装的 Nginx 相关包
yum list installed | grep mysql # 查看已安装的 MySQL 相关包
# 查看单个软件是否安装
yum list installed nginx # 若输出包信息则已安装,否则未安装
3. 查看软件详情(版本、功能、依赖)
yum info nginx # 查看 Nginx 的版本、描述、依赖包、安装大小等信息
四、核心功能:升级软件
1. 升级单个软件
yum update -y nginx # 将已安装的 Nginx 升级到仓库中的最新版本
2. 升级系统所有软件(谨慎使用)
yum update -y # 升级系统中所有已安装的软件(包括内核、系统组件)
- 适用场景:系统日常维护、修复安全漏洞;
- 注意:生产环境建议先备份数据,避免部分软件升级后不兼容(比如内核升级可能影响驱动)。
3. 排除不需要升级的软件
如果不想升级某个软件(比如内核),可临时排除:
yum update -y --exclude=kernel # 升级所有软件,排除内核
五、核心功能:卸载软件
# 语法:yum remove -y 软件包名
yum remove -y nginx # 卸载 Nginx 服务(自动删除关联的依赖包,不残留配置)
yum remove -y mysql-server # 卸载 MySQL 服务
- 对比
rpm -e:yum 会自动删除该软件的依赖包(且这些依赖包无其他软件使用时),更干净;rpm -e需手动处理依赖; - 适用场景:软件无用时彻底删除,释放磁盘空间。
六、常用辅助功能
1. 查看软件安装的文件路径
yum provides nginx # 查看 Nginx 包安装的所有文件路径(比如配置文件、可执行文件)
2. 清理无用依赖包(释放空间)
系统安装软件后,可能残留无用的依赖包,可清理:
yum autoremove -y # 自动删除无依赖的无用包
3. 查看 yum 仓库列表
yum repolist # 查看当前启用的软件仓库(确认源是否生效)
yum repolist all # 查看所有仓库(包括禁用的)
七、针对之前的 Nginx 场景实操
你已安装 nginx-filesystem(依赖包),想安装完整 Nginx 服务:
# 1. 直接安装(yum 会复用已有的依赖包,无需重复安装)
yum install -y nginx
# 2. 安装后验证是否成功
yum list installed nginx # 查看安装结果
systemctl start nginx # 启动 Nginx 服务
systemctl enable nginx # 设置开机自启
curl localhost # 访问本地,若返回 Nginx 欢迎页则成功

浙公网安备 33010602011771号