嘿,朋友!欢迎来到 Fedora Linux 的包管理世界。如果你刚从 Windows 或者 macOS 切换过来,看到终端里冷冰冰的字符可能会觉得有点陌生。但相信我,一旦你掌握了 dnf,你会发现管理软件就像在应用商店里点击一样简单——而且更强大、更透明、更自由。
dnf 是 Dandified YUM 的缩写,它是 Fedora 默认的软件包管理器,用来处理 RPM 格式的软件包。它可以帮你安装新软件、更新系统、移除不用的应用,还能管理软件仓库。别被这些术语吓到,接下来我会带你一步步探索,就像在咖啡馆聊天一样轻松。
一、dnf 初体验:为什么它是你的好朋友?
首先,让我们聊聊 dnf 到底能做什么。想象一下,你想装个文本编辑器,或者更新整个系统的安全性。在 Fedora 里,你不需要去网站下载 .exe 或 .dmg 文件,然后手动配置环境变量。你只需要打开终端,敲几个命令,dnf 会帮你搞定一切:下载、解压、安装、配置依赖。
依赖关系是 dnf 的超能力。比如你想安装一个视频播放器,它可能需要解码器、字体库、图形接口支持。dnf 会自动检查并安装所有需要的“配件”,你不需要一个个去下载。
权限问题:sudo 是必须的
在 Fedora 中,修改系统软件需要管理员权限。所以,几乎所有 dnf 命令都要加上 sudo。如果你没有 sudo 权限,需要先联系管理员把你加入 wheel 组。
二、安装软件:把心仪的应用带回家
基本安装命令
最简单的安装命令是:
sudo dnf install <软件名>
例如,你想安装 Firefox 浏览器(虽然 Fedora 默认带它,但假设你要重装或安装其他版本):
sudo dnf install firefox
运行后,dnf 会列出将要安装的包和依赖,然后询问 Is this ok [y/N]:。输入 y 并按回车,等待下载和安装完成。
安装特定版本或从指定仓库
有时候,你可能需要安装特定版本的软件,或者从非默认仓库安装。比如,你想从 COPR(社区仓库)安装一个最新版的开发工具:
sudo dnf install copr:copr.fedorainfracloud.org/user123/toolname
这里 copr:... 是 COPR 仓库的标识格式。dnf 会自动启用该仓库并安装。
交互式安装与自动确认
如果你不想每次都确认,可以加 -y 或 --assumeyes:
sudo dnf install -y firefox
这在你写脚本自动部署系统时非常有用。
搜索软件:找不到应用?搜一下!
在 Fedora,软件分散在不同的仓库里。你可能不知道确切的包名。这时用 search 命令:
dnf search firefox
输出会列出所有名称或描述中包含 “firefox” 的包,比如 firefox、firefox-locale-en、firefox-langpacks 等。这样你就能找到正确的包名。
查看软件信息
安装前,想了解更多细节?用 info:
dnf info firefox
你会看到包的大小、版本、来源仓库、描述、甚至依赖列表。这能帮你判断这个包是否合适。
三、更新系统:保持与时俱进
更新所有软件
sudo dnf upgrade
这会检查所有已安装的软件,并升级到最新版本。通常你会看到类似这样的输出:
Last metadata expiration check: 2:15:00 ago on Mon 03 Jul 2026 10:00:00 AM UTC.
Dependencies resolved.
=================================================================
Package Arch Version Repository Size
=================================================================
Upgrading:
firefox x86_64 120.0-1.fc39 fedora 150 M
...
Transaction Summary
=================================================================
Upgrade 45 Packages
确认后即可更新。
只更新安全补丁
如果你关心系统安全,但懒得每次全量更新,可以只安装安全相关的更新:
sudo dnf upgrade --security
这会过滤掉非安全更新,只处理那些被标记为“安全”的包。
更新特定软件
sudo dnf upgrade firefox
只更新 Firefox,不影响其他软件。
预更新检查
在执行大版本升级前,可以先模拟一下:
sudo dnf upgrade --refresh --dry-run
--dry-run 会让 dnf 只打印将要做什么,而不实际执行。--refresh 强制刷新元数据,确保你拿到最新信息。
四、卸载软件:清理不再需要的东西
基本卸载命令
sudo dnf remove <软件名>
例如:
sudo dnf remove firefox
dnf 会列出要移除的包以及可能残留的“孤儿依赖”(即只被该软件使用的依赖库)。你会看到类似:
Removing:
firefox x86_64 120.0-1.fc39 @updates 150 M
Removing dependent packages:
libxul x86_64 120.0-1.fc39 @fedora 20 M
确认后即可移除。
自动移除孤儿依赖
有时候,卸载软件后,一些原本依赖它的库还留在系统里,占空间。用 autoremove 清理:
sudo dnf autoremove
这会移除所有不再被任何已安装包依赖的库。建议在卸载软件后顺便运行一下,保持系统整洁。
只移除包,保留配置文件
有些时候,你可能想重装软件但保留用户配置。用 downgrade 或先移除再安装,但 dnf 没有直接“保留配置移除”的选项。不过,你可以手动保留配置文件目录(通常在家目录里的 .config 或 .local 下),卸载后再重装。
五、仓库管理:掌控软件来源
列出当前仓库
dnf repolist
输出类似:
repo id repo name
fedora Fedora 39 - x86_64
updates Fedora 39 - x86_64 - Updates
fedora-modular Fedora Modular 39 - x86_64
updates-modular Fedora Modular 39 - x86_64 - Updates
这让你知道系统正在从哪些仓库获取软件。
启用/禁用仓库
某些仓库默认是禁用的,比如第三方仓库或测试仓库。你可以用 --enablerepo 临时启用:
sudo dnf --enablerepo=fedora-debuginfo install some-package
或者永久启用/禁用,编辑 /etc/dnf/repos.d/ 下的 .repo 文件,修改 enabled=0 或 enabled=1。
添加第三方仓库
比如,你想安装 Steam 游戏,可能需要添加 RPM Fusion 仓库:
sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
这会自动下载并安装仓库配置包,之后你就可以用 dnf install steam 安装了。
禁用仓库
如果一个仓库导致冲突,可以临时禁用:
sudo dnf --disablerepo=fedora-debuginfo install something
六、高级技巧:让 dnf 更高效
清理缓存
dnf 会缓存下载的包和元数据,占用磁盘空间。定期清理:
sudo dnf clean all
这会清除所有缓存,包括包文件和元数据。下次安装时会重新下载。
查看历史与回滚
如果你不小心安装了错误的软件,或者系统更新后出现问题,可以用 dnf history 查看操作记录:
sudo dnf history list
输出会显示每次事务的 ID、日期、操作类型(install、upgrade、remove 等)。如果发现有问题,可以回滚:
sudo dnf history undo <ID>
比如,回滚 ID 为 5 的事务:
sudo dnf history undo 5
这会把系统状态恢复到该事务之前的样子。非常安全,因为 dnf 会仔细处理依赖关系。
查看包详情与文件列表
想知道某个软件包安装了哪些文件?用 repoquery:
dnf repoquery --files firefox
或者查看包的依赖树:
dnf repoquery --requires firefox
批量操作
你可以同时在一条命令里安装多个软件:
sudo dnf install firefox gimp vlc
或者从文件列表中批量安装:
sudo dnf install @package-group
@package-group 表示一个软件包组,比如 @development-tools、@multimedia 等。用 dnf group list 查看所有可用组。
七、常见问题排查
解决依赖冲突
如果 dnf 报告依赖冲突,通常会给出建议:
Problem: conflicting requests
- package firefox-120.0-1.fc39.x86_64 conflicts with libffi >= 3.4
这时可以尝试:
sudo dnf distro-sync
这会把所有包同步到仓库中的最新版本,解决版本不一致问题。
强制安装(谨慎使用)
如果 dnf 拒绝安装某个包,可能是因为依赖无法满足。可以用 --skip-broken 跳过有问题的包:
sudo dnf install --skip-broken some-package
或者用 --best 尝试找到最佳解决方案:
sudo dnf install --best some-package
检查仓库元数据
如果 dnf 报错说“元数据过期”或“无法下载”,可以强制刷新:
sudo dnf makecache
八、实战示例:从安装到维护的完整流程
假设你刚装好 Fedora,想搭建一个开发环境:
更新系统:
sudo dnf upgrade --refresh安装开发工具组:
sudo dnf groupinstall "Development Tools"安装具体软件:
sudo dnf install git vim python3-pip docker验证安装:
git --version python3 --version定期维护: 每周运行一次:
sudo dnf upgrade --security sudo dnf autoremove sudo dnf clean all
结语:让 dnf 成为你的得力助手
dnf 不是一个冷冰冰的命令,它是 Fedora 生态系统的核心。当你熟练掌握它,你会发现软件管理变得直观、高效、可控。无论是日常更新、安装新工具,还是排查问题,dnf 都能帮你轻松应对。
记住,多练习、多看输出、多探索。终端不会骗人,它只会告诉你系统真正在做什么。如果你遇到不熟悉的错误信息,不妨复制到搜索引擎里,社区有无数人遇到过同样的问题。
现在,打开你的终端,试试 dnf search 找找你感兴趣的东西吧!祝你探索愉快!