Linux命令-yum(RPM 包管理工具)
Linux命令-yum(RPM 包管理工具)
- 🔰 命令简介
- 📖 语法格式
- ⚙️ 常用选项与子命令
- 全局选项
- 💡 实战示例
- 1. 软件包安装
- 2. 搜索与查询
- 3. 更新系统与软件包
- 4. 卸载软件包
- 5. 仓库管理
- 6. yum 历史管理
- 7. 依赖分析
- 8. 高级用法
- ⚠️ 危险操作与注意事项
- 📚 相关命令
- 📝 总结
快速参考:yum(Yellowdog Updater Modified)是RHEL/CentOS 系统的包管理工具,用于自动解决依赖关系并安装 RPM 软件包。在 CentOS 8+/RHEL 8+ 中已被dnf替代,但存量系统仍广泛使用。
🔰 命令简介
yum基于 RPM 包管理,从配置的软件仓库(repository)中下载并安装软件包,自动处理依赖关系,是 CentOS/RHEL 日常运维的核心命令。
💡版本说明:RHEL 7/CentOS 7 使用
yum,RHEL 8+/CentOS 8+ 使用dnf(Dandified YUM)。dnf语法与yum高度兼容,大部分系统上yum命令实际上是dnf的别名。
核心概念:
| 概念 | 说明 |
|---|---|
| 仓库(repo) | 软件包的远程或本地存储位置 |
| RPM 包 | .rpm格式的二进制软件包 |
| 依赖解析 | 自动计算并安装所需的依赖包 |
| yum 缓存 | 本地缓存的仓库元数据和 RPM 包 |
📖 语法格式
yum[选项]子命令[包名...]# 安装软件包yuminstall包名# 搜索软件包yum search 关键字# 更新系统/软件包yum update[包名]# 删除软件包yum remove 包名⚙️ 常用选项与子命令
| 子命令 | 说明 |
|---|---|
install | 安装一个或多个软件包 |
remove/erase | 卸载软件包 |
update | 更新已安装的软件包 |
upgrade | 更新软件包(会处理过时依赖) |
search | 在包名和描述中搜索关键字 |
info | 显示软件包详细信息 |
list | 列出可用或已安装的软件包 |
provides | 查找提供指定文件的软件包 |
clean | 清理 yum 缓存 |
makecache | 生成/更新缓存 |
repolist | 列出已配置的仓库 |
history | 查看/管理 yum 操作历史 |
check-update | 检查可用更新 |
reinstall | 重新安装软件包 |
downgrade | 降级软件包 |
deplist | 显示软件包的依赖关系 |
全局选项
| 选项 | 说明 |
|---|---|
-y | 对所有确认提示自动回答 yes |
-q | 安静模式,减少输出 |
-v | 详细模式 |
--nogpgcheck | 跳过 GPG 签名验证 |
--enablerepo=仓库 | 临时启用指定仓库 |
--disablerepo=仓库 | 临时禁用指定仓库 |
--downloadonly | 仅下载不安装 |
--downloaddir=目录 | 指定下载目录 |
💡 实战示例
1. 软件包安装
# 安装单个软件包yuminstallnginx# 安装多个软件包(批量安装 LNMP)yuminstallnginx mysql-server php-fpm php-mysql# 自动确认安装(非交互模式,适合脚本)yuminstall-ygitvimwgetcurl# 安装本地 RPM 文件(自动处理依赖)yum localinstall ./custom-package.rpm# 从指定仓库安装yum--enablerepo=epelinstallhtop# 安装开发工具组yum groupinstall"Development Tools"2. 搜索与查询
# 搜索包含 "python" 的软件包yum search python3# 查看软件包详细信息yum info nginx# 列出所有已安装的软件包yum list installed# 列出所有可用(未安装)的软件包yum list available# 列出所有软件包(已安装 + 可用)yum list all# 查看某个包的已安装版本yum list installed|grepkernel# 查找哪个包提供了 /usr/bin/ssh 文件yum provides /usr/bin/ssh# 按通配符搜索yum list'php-*'3. 更新系统与软件包
# 更新所有软件包(包括内核)yum update# 仅更新安全补丁yum update--security# 更新单个软件包yum update nginx# 检查有哪些可用更新yum check-update# 仅下载更新但不安装(便于离线部署)yum update--downloadonly--downloaddir=/tmp/updates# 更新到指定版本(锁定版本)yum update-to nginx-1.20.14. 卸载软件包
# 卸载单个软件包yum remove nginx# 卸载多个软件包yum remove httpd php php-mysql# 自动确认卸载yum remove-ydocker# 卸载软件包及其未被其他包使用的依赖yum autoremove nginx5. 仓库管理
# 列出所有已配置的仓库yum repolist# 列出所有仓库(含禁用的)yum repolist all# 查看仓库详细信息yum repoinfo# 生成/更新仓库元数据缓存yum makecache# 清理所有缓存文件yum clean all# 仅清理软件包缓存yum clean packages# 仅清理元数据缓存yum clean metadata6. yum 历史管理
# 查看 yum 操作历史yumhistory# 查看指定历史条目的详细信息yumhistoryinfo10# 撤销某次操作(回滚到指定事务之前)yumhistoryundo10# 重做某次操作yumhistoryredo10# 列出涉及某软件包的历史操作yumhistorylist nginx7. 依赖分析
# 查看软件包的依赖关系yum deplist nginx# 查看哪些包依赖指定软件包yum deplist--reversenginx# 显示包的已安装依赖和缺失依赖yum check-dependencies8. 高级用法
# 安装 EPEL 仓库(Extra Packages for Enterprise Linux)yuminstallepel-release# 查看特定仓库中的软件包yum--disablerepo='*'--enablerepo=epel list available# 仅下载不安装(用于离线环境部署)yuminstall--downloadonly--downloaddir=/tmp/rpmsdocker# 忽略特定依赖安装(危险!仅限特殊场景)yuminstall--skip-broken package-name# 从特定源安装(排除某些仓库)yuminstall--disablerepo=base--enablerepo=epelhtop⚠️ 危险操作与注意事项
⚠️危险警告:以下操作可能导致系统不稳定或软件包损坏。
# 危险:强制删除内核(可能导致系统无法启动)yum remove kernel# 回滚方案:保留至少两个内核版本# 安装回内核:yum install kernel# 危险:跳过依赖安装yuminstall--skip-broken broken-package# 回滚方案:记录安装的包,使用 yum history undo 回滚# 危险:在无网络环境中执行 updateyum update# 回滚方案:使用 yum history undo 撤销# 建议先执行 yum check-update 预览变更💡安全操作建议:
- 生产环境更新前先
yum check-update预览变更- 关键服务器禁止自动更新,手动审查后分批执行
- 使用
yum history追踪每次变更,以便快速回滚- 配置
yum-cron仅下载更新,不自动安装- CentOS 7 EOL 后迁移到 Rocky Linux 或 AlmaLinux
📚 相关命令
| 命令 | 关系与说明 |
|---|---|
dnf | yum 的下一代替代品(RHEL 8+ 默认) |
rpm | 底层 RPM 包管理器,直接操作 RPM 文件 |
yumdownloader | 仅下载 RPM 包不安装(yum-utils 提供) |
yum-config-manager | 管理 yum 仓库配置(yum-utils 提供) |
yum-cron | yum 自动更新定时任务 |
repoquery | 查询仓库中的软件包信息(yum-utils 提供) |
createrepo | 创建自定义 yum 仓库 |
apt | Debian/Ubuntu 系统的包管理工具 |
📝 总结
yum是 CentOS/RHEL 生态的核心包管理工具。掌握install、search、update、remove、history五个子命令即可覆盖日常运维 90% 的场景。对于新版系统(RHEL 8+/CentOS 8+),建议学习dnf使其平滑过渡。
💡运维建议:始终在变更前查看
yum history了解历史操作,在升级前使用yum check-update预览,并通过yum history undo在出问题时快速回滚。
