dpkg 是干什么的
dpkg 是 deb 体系的底层包工具:直接处理本地 .deb 文件的安装、查询与卸载,但不负责解析依赖,依赖由 apt 负责。统信 UOS 等 DEB 系发行版上都用它做底层操作。日常排障中,dpkg 的查询能力比安装能力更常用:查文件归属、查包内文件清单都靠它。
基本信息
| 安装本地包 | dpkg -i pkg.deb |
|---|---|
| 列出已装包 | dpkg -l |
| 查包内文件 | dpkg -L 包名 |
| 反查文件归属 | dpkg -S /path/file |
| 卸载 | -r 保留配置,-P 连配置一起清除 |
典型使用场景
- 离线环境安装厂商提供的 deb 包
- 查某个文件属于哪个已安装包
- 确认软件安装后在磁盘上放了哪些文件
- 卸载后清理残留配置,避免影响重装
- 核对系统里是否装了某个版本的包
安装与查询示例
安装与查询示例
sudo dpkg -i ./app_1.0_arm64.deb # 安装本地 deb 包
sudo apt -f install # 补齐未满足的依赖
dpkg -l | grep app # 确认已安装及版本
dpkg -L app | head -20 # 查看包内文件清单
dpkg -S /usr/bin/xx # 反查文件属于哪个包
dpkg -s app | grep -E 'Version|Status' # 查看包状态与版本
sudo dpkg -r app && sudo dpkg -P app # 先卸载,再清除残留配置常用参数
| 参数 | 作用 | 注意点 |
|---|---|---|
| -i | 安装本地 deb 包 | 不解析依赖,需 apt 收尾 |
| -l | 列出已安装包 | 配合 grep 精确匹配 |
| -L | 列出包内文件 | 确认安装路径时使用 |
| -S | 按文件反查包 | 路径要写绝对路径 |
| -P | 卸载并清除配置 | 比 -r 更彻底,慎用 |
| --configure -a | 完成未配置的包 | 装完后状态异常时使用 |
dpkg -i 报依赖不满足是正常现象,因为 dpkg 不做依赖解析;随后执行 apt -f install 补齐依赖,这是 deb 系的标准收尾动作。
典型排障用法
- 查文件属于哪个包:dpkg -S 加绝对路径
- 查包在磁盘上放了哪些文件:dpkg -L 包名
- 安装异常时看状态字段是否处于半安装
- 用 apt -f install 收尾处理未满足依赖
- 离线环境先确认本地包与系统架构一致