Linux apt yum dnf 区别与使用

8次阅读

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

Linux apt yum dnf 区别与使用

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 makecachesudo dnf check-update(RPM系)
  • 安装软件sudo apt install nginxsudo 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
  • 切记:换源后一定要刷新缓存,否则仍走旧源
text=ZqhQzanResources