apt、yum、dnf分属debian系(.deb)和rpm系(.rpm)不同发行版生态,命令语法、依赖解析(dnf优于yum)、换源路径及缓存更新方式均不同,不可混用。

Linux里apt、yum、dnf都是包管理工具,但分属不同发行版体系,底层机制、命令习惯和适用场景有明显差异。搞清它们的区别,能避免输错命令、装不上软件、甚至误删系统组件。
对应系统与底层包格式不同
apt专用于Debian系(Ubuntu、Debian、Kali等),管理.deb格式软件包;yum和dnf则用于RPM系(CentOS、Fedora、openEuler、RHEL等),处理.rpm包。这不是“哪个更好”,而是发行版生态决定的——就像Windows程序不能直接在macOS上运行,.deb包也不能用dnf安装,反之亦然。
- Ubuntu/Debian → 用 apt(或底层 dpkg)
- Fedora 22+ / CentOS 8+ / RHEL 8+ / openEuler → 用 dnf(yum 命令实际是 dnf 的软链接)
- CentOS 7 / RHEL 7 及更早 → 用 yum(dnf 不默认存在)
核心命令对照:安装、更新、卸载
功能相似,但命令写法和默认行为有细节差别。例如,yum update 和 dnf upgrade 都升级系统,但 dnf upgrade 是标准推荐写法;apt upgrade 不升级内核,而 apt full-upgrade 才会——这些不注意容易遗漏关键更新。
-
更新软件列表:
sudo apt update(Debian系)|sudo dnf makecache或sudo dnf check-update(RPM系) -
安装软件:
sudo apt install nginx|sudo dnf install nginx -
升级全部软件:
sudo apt upgrade(安全/小版本)|sudo apt full-upgrade(含大版本)|sudo dnf upgrade(等效于 yum update) -
卸载软件:
sudo apt remove nginx(保留配置)|sudo apt purge nginx(连配置一并删)|sudo dnf remove nginx(dnf 默认不删配置,无 purge 对应项)
依赖处理与性能表现
dnf 是 yum 的替代者,不是简单改名。它用 libsolv 库重写了依赖解析引擎,速度提升约50%,内存占用减少30%,还支持并行下载。yum 在复杂依赖场景下容易卡住或报错,而 dnf 多数时候能给出更明确的冲突提示。apt 同样成熟稳定,依赖解析准确,且 Ubuntu 社区软件源非常丰富,新软件上线快。
- 遇到“无法解决依赖”时,dnf 通常比 yum 更快定位问题包
- apt search 比 yum search / dnf search 更易匹配模糊关键词(如搜 “node” 能命中 nodejs)
- dnf 默认启用 clean_requirements_on_remove,卸载主包时会自动清理无用依赖;yum 需手动配置或使用插件
换源与仓库管理习惯
国内用户几乎必须换源,否则访问国外官方源极慢甚至失败。但换源方式不同:apt 源地址写在 /etc/apt/sources.list 或 /etc/apt/sources.list.d/ 下文件中;dnf/yum 的源配置集中在 /etc/yum.repos.d/ 目录,每个 .repo 文件定义一个仓库。
- Ubuntu 换阿里源:替换 sources.list 内容后执行
sudo apt update - CentOS 8+/Fedora:备份原有 repo 文件,下载阿里云或清华源的 .repo 到 /etc/yum.repos.d/,再运行
sudo dnf makecache - 切记:换源后一定要刷新缓存,否则仍走旧源










