905 字
5 分钟
Linux 软件包管理:APT 与 DNF 日常操作速查

Linux 发行版虽然多,包管理基本分两大家族:Debian/Ubuntu 用 APT(.deb 包),RHEL/CentOS/Fedora/Rocky 用 DNF(.rpm 包,YUM 的后继)。本文给出对照速查,并讲几件手册之外但天天会碰到的事。

日常操作对照表#

目的APT (Debian/Ubuntu)DNF (RHEL 系)
刷新软件源索引sudo apt updatesudo dnf check-update(通常可省,自动刷新)
安装sudo apt install nginxsudo dnf install nginx
升级全部sudo apt upgradesudo dnf upgrade
卸载sudo apt remove nginxsudo dnf remove nginx
卸载+清配置sudo apt purge nginxsudo dnf remove nginx(rpm 无独立配置清理,需手动删)
搜索apt search 关键词dnf search 关键词
查看包信息apt show nginxdnf info nginx
列出包内文件dpkg -L nginxrpm -ql nginx
查文件属于哪个包dpkg -S /usr/sbin/nginxrpm -qf /usr/sbin/nginx 或 dnf provides */nginx
清理不用的依赖sudo apt autoremovesudo dnf autoremove

最常见的误解:apt update 不升级任何东西#

apt update 只是从软件源下载最新的包索引(有哪些包、什么版本),系统上的软件一个都没动。真正的升级是 apt upgrade。所以正确流程是两条一起跑:

Terminal window
sudo apt update && sudo apt upgrade -y

只跑第二条会用旧索引升级,经常提示「已是最新」而实际上源里有新版。DNF 系没有这个问题,dnf upgrade 会自动刷新元数据。

另外区分:apt full-upgrade(旧称 dist-upgrade)允许为升级而增删包,内核大版本、桌面环境升级时才需要;日常安全更新用 upgrade 即可。

查文件归属:排障神器#

服务器上发现一个陌生文件 /usr/local/bin/xyz,想知道是不是包管理器装的:

Terminal window
# Debian 系
dpkg -S /usr/local/bin/xyz
# RHEL 系
rpm -qf /usr/local/bin/xyz

如果查不到,说明它是手工编译安装或脚本释放的,卸载和升级都得自己管。反过来,想找「提供 dig 命令的包叫什么」:

Terminal window
apt-file search bin/dig # 需先装 apt-file
dnf provides '*/bin/dig' # DNF 原生支持路径通配

答案分别是 dnsutils(新版为 bind9-dnsutils)和 bind-utils——包名和命令名不一致是常态,查一下比猜快。

版本锁定与暂缓升级#

数据库这类对版本敏感的服务,你可能不希望它被 upgrade 顺手升级:

Terminal window
# APT
sudo apt-mark hold mysql-server # 锁定
sudo apt-mark unhold mysql-server # 解锁
apt-mark showhold # 查看锁定列表
# DNF(需 versionlock 插件)
sudo dnf install python3-dnf-plugin-versionlock
sudo dnf versionlock add mysql-server

锁定只是「不自动升」,手动 install 包名=版本号 仍可指定版本。

卸载残留与自动依赖#

apt remove 会保留配置文件(方便重装后找回配置),要彻底清理用 purge。装包时被顺带拉进来的依赖,卸载主包后不会自动消失,定期 sudo apt autoremove --purge 保持系统干净。

DNF 的 remove 默认行为接近 remove + autoremove 的组合(会提示移除孤儿依赖),但 /etc 下手工改过的配置文件不会动,需要时手动删。

几点安全建议#

  1. 生产环境别用 -y 盲升:先 apt list --upgradable 或 dnf check-update 看看要动哪些包,数据库、内核类单独安排窗口。
  2. 别混用第三方源:一个 .deb 包强行装在不匹配的发行版版本上,依赖地狱就是这么来的。优先用官方源,第三方源确认其支持你的发行版代号。
  3. 内核升级要重启才生效:needrestart(Debian)或 dnf needs-restarting -r 可以告诉你哪些服务或系统本身需要重启。
  4. 个人软件装到用户目录:/opt、~/bin、或 Flatpak/AppImage,别把手工编译的东西塞进 /usr/bin,与包管理器抢地盘。

延伸阅读#

Linux 软件包管理:APT 与 DNF 日常操作速查
https://meow.us.kg/posts/linux-package-manager-apt-dnf/
作者
もゆちゃん
发布于
2026-09-13
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取