yum 命令本身不是用来安装 .rpm 包的,而是用来管理软件仓库和依赖关系的。

您可以把 yum 理解为一个“智能的包管理器”,它的工作方式与直接使用 rpm 命令有本质区别。
rpm 命令:直接安装单个 RPM 包
rpm 是 Red Hat Package Manager 的缩写,它是一个底层的包管理工具,它直接操作 .rpm 文件,但不关心依赖关系。
-
特点:
- 直接操作本地或远程的
.rpm文件。 - 不会自动解决依赖问题,如果一个包需要另一个库(依赖项),而你的系统没有安装,
rpm命令会直接报错并失败。 - 适用于安装已经下载好的、或者自包含的、没有复杂依赖的软件包。
- 直接操作本地或远程的
-
基本用法:
(图片来源网络,侵删)# 安装本地的 .rpm 文件 sudo rpm -ivh package-name.rpm # 安装来自网络 URL 的 .rpm 文件(不推荐,因为无法解决依赖) sudo rpm -ivh http://example.com/path/to/package.rpm
-i: install (安装)-v: verbose (显示详细信息)-h: hash (显示安装进度条)
为什么不推荐直接使用 rpm 安装?
因为现代 Linux 系统的软件包之间有复杂的依赖关系,直接使用 rpm 安装一个软件,很可能会因为缺少某个依赖而失败,然后你需要手动去寻找并安装那个依赖,这个过程非常繁琐且容易出错。
yum 命令:智能的仓库管理器
yum (Yellowdog Updater, Modified) 是一个在 rpm 基础上构建的高级包管理器,它最大的优势在于依赖解决。
-
特点:
- 不直接操作
.rpm文件,它从一个或多个软件仓库 中获取软件包信息。 - 自动解决依赖关系,当你想安装一个软件时,
yum会自动分析并下载所有它所需要的依赖包,然后一并安装。 - 更安全。
yum会检查软件包的数字签名,确保包的完整性和来源可信。 - 方便升级和删除,可以轻松地升级整个系统或删除软件及其所有依赖。
- 不直接操作
-
基本用法:
(图片来源网络,侵删)# 搜索仓库中可用的软件包 yum search <关键词> # 显示软件包的详细信息 yum info <软件包名> # 安装软件包 (yum 会自动处理所有依赖) sudo yum install <软件包名> # 升级软件包 sudo yum update <软件包名> # 删除软件包 sudo yum remove <软件包名> # 清理缓存 sudo yum clean all
dnf 命令:yum 的现代继任者
从 CentOS 8、Fedora 22 等较新的系统开始,yum 已经被它的下一代版本 dnf (Dandified Yum) 所取代。dnf 拥有 yum 的所有功能,并且在性能、依赖解决和插件系统方面有了显著提升。
在大多数现代系统上,推荐使用 dnf 而不是 yum。
dnf 的命令语法与 yum 几乎完全相同:
# 使用 dnf 安装软件 (推荐方式) sudo dnf install <软件包名> # 使用 dnf 搜索 dnf search <关键词>
注意:在较新的系统(如 CentOS 8+)上,
yum命令通常是一个指向dnf的符号链接,所以即使你输入yum,系统实际执行的也是dnf,但在概念上,我们应该知道dnf是更现代、更推荐的工具。
总结与对比
| 特性 | rpm 命令 |
yum / dnf 命令 |
|---|---|---|
| 工作方式 | 直接操作 .rpm 文件 |
从软件仓库获取信息 |
| 依赖处理 | 不处理,需要手动解决 | 自动解决,非常方便 |
| 主要用途 | 安装离线包、修复系统、管理特定包 | 日常软件的安装、更新、删除 |
| 使用场景 | 没有网络连接。 软件包是自包含的,无依赖。 系统修复。 |
有网络连接的日常使用。 安装标准库软件(如 nginx, python)。系统更新。 |
| 推荐度 | 仅用于特定场景 | 强烈推荐(dnf > yum) |
场景化建议
-
我需要安装一个从官网下载的
.rpm文件。- 首选方法:将文件放到你的系统中,使用
dnf install /path/to/package.rpm。dnf会尝试从已配置的仓库中解决其依赖,如果仓库中有,就能成功安装。 - 备选方法:
dnf无法解决依赖,再尝试sudo rpm -ivh package.rpm,但准备好手动解决依赖问题。
- 首选方法:将文件放到你的系统中,使用
-
我想安装一个常见的软件,
htop或git。- 绝对使用:
sudo dnf install htop或sudo yum install htop,这是最简单、最安全、最可靠的方法。
- 绝对使用:
-
我的服务器无法连接互联网,无法使用
yum/dnf。- 这时你只能使用
rpm命令,你需要提前在有网络的机器上下载好主包和所有依赖包,然后一起传输到离线服务器上,按顺序安装。
- 这时你只能使用
希望这个解释能帮助您彻底理解 rpm 和 yum 的区别!
