核心机制
dpkg 是 Debian 系 Linux 的底层包管理工具。它直接操作 .deb 文件。与 apt 不同,dpkg 不做依赖解析。安装一个包时,如果缺少依赖,它不会自动去下载。这一点需要注意。它只做本地包文件的安装、移除、查询。依赖问题需要手动解决,或通过 apt --fix-broken install 来事后处理。
主要功能
-
安装本地包:输入
.deb文件路径,执行sudo dpkg -i,将包解压并写入系统目录。输出为已安装的软件包。不处理依赖,缺依赖会报错。 -
移除包(保留配置):通过
sudo dpkg -r操作,删除程序文件但保留/etc下的配置文件。输出是软件被卸载,配置残留。下次安装同包可复用配置。 -
完全清除包:使用
sudo dpkg --purge,连配置文件和程序文件一并删除。输出是彻底移除,无残留。常用于重装或清理。 -
列出已安装包:
dpkg -l输出所有已安装包的列表,含包名、版本、架构、状态。支持管道grep过滤。查询范围是系统全部.deb记录。 -
查询包详细信息:
dpkg -s加上包名,输出包的版本、依赖、安装时间、维护者等元数据。不显示文件列表。用来确认包状态。 -
查看包文件清单:
dpkg -L输出指定包安装后产生的所有文件路径。包括二进制、库、配置文件。可用于定位文件归属。 -
反向查找文件归属:
dpkg -S输入一个文件路径,输出该文件属于哪个包。适合排查冲突或未知文件来源。 -
解压但不安装:
dpkg --unpack将.deb解压到系统,但不执行配置脚本。输出是文件到位但未激活。配合--configure后续处理。 -
查看包内文件列表:
dpkg-deb -c查看.deb包内部包含哪些文件,不解压。输出是文件路径和权限。适合检查包内容。 -
提取包内容:
dpkg-deb -x将.deb内容提取到指定目录,不涉及系统安装。输出是目录下的文件。用于手动分析或定制。
使用方式
安装包时,先 sudo dpkg -i package.deb。如果报依赖错误,接着跑 sudo apt --fix-broken install。它会自动补装缺失的依赖。移除包用 -r 或 --purge,前者留配置,后者全删。查询操作用 -l、-s、-L、-S,不需要 sudo。解压或提取包用 dpkg-deb 系列命令。有个细节:dpkg --configure -a 可配置所有未配置的包,适用于解包后统一处理。
与 apt 对比
| 对比维度 | dpkg | apt |
|---|---|---|
| 依赖处理 | 不自动处理,缺依赖报错 | 自动解析并安装依赖 |
| 操作对象 | 本地 .deb 文件 |
远程仓库或本地 .deb
|
| 安装方式 | 手动指定文件路径 | 包名自动下载安装 |
| 查询能力 | 本地已安装包信息 | 支持仓库搜索、版本对比 |
| 配置管理 | 手动执行 --configure
|
自动执行配置脚本 |
| 适用范围 | 单包操作、离线安装 | 批量安装、系统升级 |
适用场景
- 离线环境安装
.deb包。依赖需提前准备好。 - 需要保留配置文件的重装场景。用
-r移除后重装-i。 - 排查包文件冲突。用
-S查找文件归属。 - 手动分析包内容。用
dpkg-deb -c或-x。 - 修复破损的包。用
--remove --force-remove-reinstreq清理。
