首页/系统/Linux 运维命令速查/apt 与 apt-get 命令对照

apt 与 apt-get 命令对照

Debian/Ubuntu 的包管理:apt 面向交互(输出友好),apt-get/apt-cache 面向脚本(稳定接口);update 刷索引、install/remove 动包。

Linux 运维命令速查系统更新于 2026-10-13

apt 是什么

apt 是 Debian 与 Ubuntu 系面向人的包管理命令,底层仍然是 apt-get 与 apt-cache 那套接口,只是输出更友好(进度条、彩色提示)。update 只刷新软件包索引,不等于升级;install、remove、purge 才是改动系统。脚本与自动化里应使用 apt-get 与 apt-cache,因为它们的输出与参数更稳定,不易随版本变化。理解「索引与包」的区别,是避免「版本找不到」类问题的前提。

基本信息

适用平台Debian、Ubuntu、以及基于它们的发行版(Ubuntu 16.04+/Debian 8+ 提供 apt 命令,更老的系统只有 apt-get)
命令语法apt 子命令 包名...;脚本中写作 apt-get 子命令
常用子命令update 刷新索引、install 安装、remove 卸载(保留配置)、purge 连配置一起删、upgrade 升级、full-upgrade 允许为升级而卸载、autoremove 清理无用依赖、search 搜索、show 详情、list 列表
配置文件仓库源在 /etc/apt/sources.list 与 /etc/apt/sources.list.d/,版本偏好与锁定在 /etc/apt/preferences.d/
缓存与索引索引位于 /var/lib/apt/lists,下载的 deb 包缓存在 /var/cache/apt/archives

典型使用场景

  • 安装运行环境:apt install -y nginx,一次带齐依赖
  • 查询候选版本与来源:apt-cache policy 包名 看候选版本、已安装版本与各仓库优先级
  • 反查文件归属:dpkg -S /usr/sbin/nginx 确认某个文件属于哪个包
  • 清理残留配置:dpkg -l 里状态为 rc 的包说明只删了程序没删配置,需要 purge
  • 锁定版本:apt-mark hold 阻止关键包被自动升级
  • 修复破损依赖:dpkg 被中断后用 apt --fix-broken install 补齐

常用示例

常用示例
apt update
apt install -y nginx
apt remove nginx
apt purge nginx            # 连配置一起删
apt full-upgrade -y
apt list --upgradable      # 先看有哪些可升级
apt-cache policy nginx     # 候选版本与来源仓库
apt-mark hold nginx        # 冻结版本,避免被升级
dpkg -l | grep '^rc'       # 找出只删了程序、残留配置的包
dpkg -S /usr/sbin/nginx    # 由文件反查包名
dpkg -i ./app.deb || apt --fix-broken install   # 手工装包后修复依赖

apt 与 apt-get 对照

用途apt(交互)apt-get(脚本)
刷新索引apt updateapt-get update
安装apt install 包名apt-get install 包名
升级(保守)apt upgradeapt-get upgrade
升级(允许卸载)apt full-upgradeapt-get dist-upgrade
搜索与详情apt search / apt showapt-cache search / apt-cache show
输出稳定性有进度条与提示,面向人接口稳定,适合自动化
update 与 upgrade 是两步:update 只把仓库的包列表下载到本地索引,upgrade 才按新索引升级已安装的包。只执行 upgrade 不执行 update,升级依据的仍是旧索引,可能看不到可用更新。
升级前用 apt list --upgradable 看清单,并留意是否包含内核与 systemd 这类需要重启的组件。桌面与生产机的取舍不同:前者倾向 full-upgrade 保持最新,后者倾向只装安全更新并安排维护窗口。
优先用 apt install ./包名.deb 而不是 dpkg -i:apt 会自动补齐依赖,dpkg 不会。手工 dpkg -i 造成依赖破损后,用 apt --fix-broken install 或 dpkg --configure -a 修复,再回头处理装不上的包。
仓库优先级与版本锁定:/etc/apt/preferences.d/ 下的 Pin 规则能指定某个包从哪个仓库取,apt-mark hold 包名 则直接冻结当前版本阻止自动升级(showhold 查看、unhold 解除)。把其他发行版的第三方源混入现有系统(例如在 Debian 上添加 Ubuntu 的 PPA)是依赖地狱的常见起点,除非确认版本兼容,否则不要混源。
常见修复套路:dpkg 被中断后先 dpkg --configure -a 完成未配置的包,依赖不满足时 apt --fix-broken install 补齐。apt update 报签名错误通常是仓库密钥过期或缺失,需要按提示导入密钥;apt-key 已被弃用,规范做法是把密钥放到 /usr/share/keyrings/ 并用 sources.list 里的 signed-by 指向它。
升级内核与关键库后需要重启才真正生效。Debian/Ubuntu 的约定是存在 /var/run/reboot-required 文件即表示需要重启;用 needrestart 可以查出哪些服务仍在运行旧版本的库、需要单独重启。想自动装安全更新可启用 unattended-upgrades,但要清楚它也能自动重启服务,生产环境通常只让它自动下载、由人工确认安装。

易错点

  • 不先 apt update 就 install,索引过期时会报 404 或版本找不到,被误判为包不存在
  • apt upgrade 与 full-upgrade 的差别在于后者会为了完成升级而卸载包,生产机上执行前必须读清楚将要移除什么
  • 手工 dpkg -i 装包不会解析依赖,容易造成依赖破损;改用 apt install ./*.deb
  • 仓库源重复或混用不同发行版代号,会出现依赖冲突与版本降级,/etc/apt/sources.list.d 要定期清理
  • /var/cache/apt/archives 长期累积 deb 包会占用可观空间,用 apt clean 清理;配置文件的残留用 purge 处理

数据来源与参考

  • man 8 apt-get
  • man 8 apt
  • Debian 官方手册

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌