Ubuntu中dpkg命令和apt命令的关系与区别

在 Ubuntu 中,dpkg 和 apt 是软件包管理的核心工具,但二者的角色和功能有显著区别:


​一、功能定位

​特性​ ​**dpkg**​ ​**apt**​
​层级​ 底层工具(直接操作 .deb 文件) 高层工具(管理软件仓库和依赖关系)
​依赖处理​ ❌ 不自动解决依赖 ✅ 自动解析并安装依赖
​数据源​ 仅限本地 .deb 文件 远程仓库(通过 sources.list 配置)
​典型用途​ 手动安装离线包、低级维护 日常安装/更新/删除软件包

​二、核心区别

1. ​依赖管理
  • ​dpkg:

    仅安装或卸载单个 .deb 文件,若缺少依赖会报错,需手动解决。

    示例:

    复制代码
    sudo dpkg -i package.deb  # 安装本地包(可能失败)
    sudo apt install -f       # 修复依赖(安装后必须执行)
  • ​apt:

    从软件仓库下载包,并自动安装所有依赖项。

    示例:

    复制代码
    sudo apt install package  # 自动处理依赖
2. ​软件源支持
  • dpkg:
    不访问网络,仅操作本地文件。

  • apt:
    依赖 sources.list 配置的远程仓库,支持搜索、更新、升级等操作。
    示例:

    复制代码
    复制代码
    sudo apt update         # 更新软件源列表
    sudo apt upgrade        # 升级所有可更新软件包
3. ​系统维护
  • dpkg:

    提供包信息查询、文件归属检查等底层功能。

    示例:

    复制代码
    dpkg -l                 # 列出所有已安装包
    dpkg -L apache2         # 查看 apache2 包安装的文件路径
  • ​apt:

    提供高级功能(如清理无用包、删除孤儿包等)。

    示例:

    复制代码
    sudo apt autoremove     # 删除自动安装且不再需要的依赖
    sudo apt purge package  # 彻底删除包及其配置文件

​三、协作关系

  • ​apt 依赖 dpkg:
    apt 下载软件包后,调用 dpkg 执行实际安装操作。

    https://i.imgur.com/6wU9qTQ.png

  • ​修复依赖 :

    当 dpkg 因依赖问题安装失败时,需通过 apt 解决:

    复制代码
    sudo dpkg -i broken-package.deb  # 失败(提示依赖缺失)
    sudo apt install -f              # 自动安装缺失依赖

​四、使用场景对比

​场景​ ​适用工具​ ​示例命令​
安装本地 .deb 文件 dpkg sudo dpkg -i package.deb
从仓库安装软件 apt sudo apt install nginx
查询包的文件列表 dpkg dpkg -L apache2
升级所有软件 apt sudo apt update && sudo apt upgrade
修复损坏的包状态 dpkg + apt sudo dpkg --configure -a

​五、总结

  • dpkg:适合处理 离线包安装**、底层系统审计,但需手动管理依赖。
  • apt:适合日常软件管理,自动化解决依赖和仓库交互。
  • 协作:两者配合使用,覆盖从底层操作到高级管理的全场景需求。
相关推荐
xbzb3 小时前
OpenStack 网络管理(理论):Linux 网络虚拟化是 Neutron 的地基
linux·服务器·网络·openstack·network·neutron
我要见SA姐14 小时前
GitHub Actions 自动化:5 个真实运维提效案例
运维·数据库·机器学习·oracle·回归
Android系统攻城狮4 小时前
Linux FFmpeg深度解析之avcodec_flush_buffers调用流程与实战(十九)
linux·运维·服务器·ffmpeg·车载音视频·ffmpeg音视频进阶
水饺编程6 小时前
第2章:Linux 基础,解压缩【.tar.bz2】压缩包文件
linux·c语言·汇编
Y3815326626 小时前
用 httpx 写 SerpBase 异步客户端:连接池与超时配置
运维·服务器·数据库
Zevalin爱灰灰6 小时前
Linux入门第二部分(ARM裸机篇) 第二章 Cortex-A7 MPCore架构与ARM汇编基础
linux·汇编·arm开发·嵌入式
倔强的石头1066 小时前
【Linux指南】进程通信系列(七):System V 信号量 —— 同步互斥的内核原语
linux·运维·服务器
GeW6 小时前
从"补短板"到"强优势"Linux与数据库认证成为产业跃迁人才支点
linux·数据库
HZZD_HZZD7 小时前
大口径摄像水表白皮书拆解:DN40加装改造与字轮识别实测
运维·物联网·腾讯云
PellyKoo8 小时前
【Ubuntu】GTX 1080 Ti 显卡占用为0但功率高达60W的排查与解决
linux·运维·ubuntu