dnf (Dandified Yum) 是新一代的软件包管理器,主要用于基于 Fedora、CentOS 8+、RHEL 8+ 等 Red Hat 系列的发行版,它是 yum 的继任者,在性能、依赖解析和用户体验上都有显著提升。

核心概念:什么是 dnf?
你可以把 dnf 理解成一个 “应用商店”的命令行版本,它帮你完成以下几件事:
- 安装 软件
- 更新 软件
- 删除 软件
- 搜索 软件
- 管理 软件仓库
基本命令语法
所有 dnf 命令都遵循一个基本结构:
sudo dnf [选项] <命令> <软件包名称>
sudo:因为安装/删除/更新系统软件需要管理员权限,所以几乎所有操作都需要sudo。[选项]:可选的参数,-y(自动回答“是”)。<命令>:dnf的核心操作,如install,update,remove等。<软件包名称>:你想要操作的软件的名称。
最常用的 dnf 命令
下面是日常使用中最频繁的几个命令,配有示例。
搜索软件
在安装之前,通常需要先找到软件的准确名称。

-
搜索包含关键字的软件:
sudo dnf search <关键字>
示例: 搜索一个叫
htop的系统监控工具(你可能不知道它的全名)。sudo dnf search htop
输出会包含
htop.x86_64这样的信息,x86_64代表你的系统架构。 -
查找软件的详细信息:
(图片来源网络,侵删)sudo dnf info <软件包名称>
示例: 查看
htop的详细信息。sudo dnf info htop
这会显示软件的版本、简介、大小、来源仓库等关键信息。
安装软件
这是最常见的用途。
-
安装单个软件:
sudo dnf install <软件包名称>
示例: 安装
htop。sudo dnf install htop
系统会显示要下载的包和大小,并询问你是否继续,输入
y并回车即可。 -
一次安装多个软件:
sudo dnf install <软件包1> <软件包2> ...
示例: 同时安装
vim(编辑器) 和git(版本控制工具)。sudo dnf install vim git
-
自动回答“是”:为了避免每次都输入
y,可以使用-y选项。sudo dnf install -y htop
更新软件
保持系统软件的最新版本非常重要,因为它通常包含安全补丁和新功能。
-
更新所有已安装的软件:
sudo dnf update
同样,可以使用
sudo dnf update -y来跳过确认。 -
更新指定的软件:
sudo dnf update <软件包名称>
示例: 只更新
htop。sudo dnf update htop
删除软件
不再需要的软件应该及时卸载,以释放空间和减少潜在的安全风险。
-
删除软件:
sudo dnf remove <软件包名称>
示例: 删除
htop。sudo dnf remove htop
-
同时删除不再需要的依赖:
autoremove会自动删除那些因为其他软件被移除而变得“无用”的依赖包。sudo dnf autoremove
列出软件
-
列出所有已安装的软件:
sudo dnf list installed
或者简写:
sudo dnf list installed
-
列出可用的软件:
sudo dnf list available
-
查看特定软件的状态:
sudo dnf list <软件包名称>
示例:
sudo dnf list htop
这会显示
htop是否已安装,以及可用的版本。
进阶与实用命令
软件组管理
有些软件是以“组”的形式发布的,开发工具”、“GNOME 桌面环境”。
-
列出所有可用的软件组:
sudo dnf group list
-
安装一个软件组:
sudo dnf group install "Development Tools"
注意: 组名通常需要用引号括起来,特别是当它包含空格时。
-
查看软件组的内容:
sudo dnf group info "Development Tools"
查看历史记录
dnf 会记录所有你执行过的安装、删除、更新操作。
-
查看历史操作列表:
sudo dnf history list
每个操作都有一个 ID 编号。
-
查看某个操作的详细信息:
sudo dnf history info <ID>
示例: 查看 ID 为
5的操作。sudo dnf history info 5
-
撤销某个操作:这是一个非常有用的功能,可以让你“后悔”。
sudo dnf history undo <ID>
示例: 如果你不小心删除了
htop,可以通过查看历史找到其安装操作的 ID,undo恢复它。
清理缓存
dnf 会把下载的软件包保存在缓存中,以便离线安装或更新。
- 清理所有缓存:
sudo dnf clean all
这可以释放大量磁盘空间。
总结表格
| 功能 | 命令 | 示例 |
|---|---|---|
| 搜索软件 | sudo dnf search <关键字> |
sudo dnf search vim |
| 查看信息 | sudo dnf info <包名> |
sudo dnf info git |
| 安装软件 | sudo dnf install <包名> |
sudo dnf install -y htop |
| 更新所有 | sudo dnf update |
sudo dnf update -y |
| 更新指定 | sudo dnf update <包名> |
sudo dnf update git |
| 删除软件 | sudo dnf remove <包名> |
sudo dnf remove htop |
| 卸载无用依赖 | sudo dnf autoremove |
sudo dnf autoremove |
| 查看已安装 | sudo dnf list installed |
sudo dnf list installed |
| 安装软件组 | sudo dnf group install "<组名>" |
sudo dnf group install "Development Tools" |
| 查看历史 | sudo dnf history list |
sudo dnf history list |
| 撤销操作 | sudo dnf history undo <ID> |
sudo dnf history undo 3 |
| 清理缓存 | sudo dnf clean all |
sudo dnf clean all |
重要提示
- 需要管理员权限:几乎所有修改系统的
dnf命令都需要sudo。 - 系统兼容性:
dnf主要用于 Fedora、CentOS 8+、RHEL 8+,如果你使用的是 CentOS 7 或更早版本,你应该使用yum命令,其用法与dnf基本相同。 - 操作前确认:特别是
remove和update操作,最好先用dnf info或dnf list确认一下你要操作的软件包名称是否正确。
希望这份详细的指南能帮助你熟练掌握 dnf 命令!
