dpkg 命令
基本介绍
dpkg (Debian Package) 是 Debian 系 Linux 发行版(如 Debian、Ubuntu)的底层包管理工具。它负责安装、删除、配置和管理 .deb 格式的软件包。dpkg 是 APT(Advanced Package Tool)的底层支持工具,APT 提供了更高级的依赖管理和网络下载功能。
资料合集:https://pan.quark.cn/s/6fe3007c3e95、https://pan.quark.cn/s/561de99256a5、https://pan.quark.cn/s/985f55b13d94、https://pan.quark.cn/s/d0fb20abd19a
语法
dpkg [选项] <命令> [包名/文件名]
常用命令
安装命令
| 命令 | 说明 |
|---|
dpkg -i <package.deb> | 安装指定的 deb 包 |
dpkg --install <package.deb> | 安装指定的 deb 包 |
dpkg --unpack <package.deb> | 只解压包,不配置 |
dpkg --configure <package> | 配置已解压的包 |
删除命令
| 命令 | 说明 |
|---|
dpkg -r <package> | 删除包(保留配置文件) |
dpkg --remove <package> | 删除包(保留配置文件) |
dpkg -P <package> | 彻底删除包(包括配置文件) |
dpkg --purge <package> | 彻底删除包(包括配置文件) |
查询命令
| 命令 | 说明 |
|---|
dpkg -l | 列出所有已安装的包 |
dpkg --list | 列出所有已安装的包 |
dpkg -s <package> | 显示包的状态信息 |
dpkg --status <package> | 显示包的状态信息 |
dpkg -L <package> | 列出包安装的所有文件 |
dpkg --listfiles <package> | 列出包安装的所有文件 |
dpkg -S <file> | 查找文件所属的包 |
dpkg --search <file> | 查找文件所属的包 |
dpkg -p <package> | 显示包的详细信息 |
dpkg --print-avail <package> | 显示包的详细信息 |
其他命令
| 命令 | 说明 |
|---|
dpkg --audit | 检查系统中损坏的包 |
dpkg --clear-avail | 清除可用包的缓存信息 |
dpkg --get-selections | 列出所有包的选择状态 |
dpkg --set-selections | 设置包的选择状态 |
常用选项
| 选项 | 说明 |
|---|
-i | 安装包 |
-r | 删除包(保留配置) |
-P | 彻底删除包(包括配置) |
-l | 列出已安装的包 |
-s | 显示包状态 |
-L | 列出包中的文件 |
-S | 搜索文件所属包 |
-p | 显示包详细信息 |
--force-* | 强制执行某些操作 |
--no-triggers | 不执行触发器 |
--unpack | 只解压不配置 |
--configure | 配置已解压的包 |
使用示例
1. 安装 deb 包
dpkg -i nginx_1.18.0-0ubuntu1_all.deb
2. 安装多个 deb 包
dpkg -i package1.deb package2.deb package3.deb
3. 删除包(保留配置)
dpkg -r nginx
4. 彻底删除包(包括配置)
dpkg -P nginx
5. 列出所有已安装的包
dpkg -l
6. 列出已安装包中包含关键字的包
dpkg -l | grep nginx
7. 查看包的状态
dpkg -s nginx
8. 列出包安装的所有文件
dpkg -L nginx
9. 查找文件所属的包
dpkg -S /usr/bin/vim
10. 只解压包不配置
dpkg --unpack nginx.deb
11. 配置已解压的包
dpkg --configure nginx
12. 检查系统中损坏的包
dpkg --audit
13. 导出当前安装包列表
dpkg --get-selections > installed_packages.txt
14. 根据列表恢复包
dpkg --set-selections < installed_packages.txt
apt-get dselect-upgrade
配置文件
主配置文件
/etc/dpkg/dpkg.cfg - dpkg 的主配置文件/etc/dpkg/dpkg.cfg.d/ - 额外配置文件目录
包信息数据库
/var/lib/dpkg/status - 包状态数据库/var/lib/dpkg/info/ - 包信息目录
配置文件示例
# /etc/dpkg/dpkg.cfg
force-confdef
force-confold
配置选项说明
| 选项 | 说明 |
|---|
force-confdef | 保留默认配置(当配置文件有冲突时) |
force-confold | 保留旧配置(当配置文件有冲突时) |
force-confnew | 使用新配置(当配置文件有冲突时) |
status-file | 指定状态文件路径 |
log | 指定日志文件路径 |
实用技巧
1. 修复损坏的包
dpkg --configure -a
2. 强制安装包(忽略依赖问题)
dpkg -i --force-depends package.deb
3. 强制覆盖文件
dpkg -i --force-overwrite package.deb
4. 重新配置已安装的包
dpkg-reconfigure nginx
5. 列出所有已安装包并计数
dpkg -l | grep -c '^ii'
6. 查找未完全配置的包
dpkg -l | grep -E '^.U'
相关命令
| 命令 | 说明 |
|---|
apt | 高级包管理工具,依赖 dpkg |
apt-get | 命令行包管理工具 |
apt-cache | 查询包缓存信息 |
aptitude | 另一个高级包管理工具 |
dpkg-deb | 操作 deb 文件的工具 |
注意事项
- 权限要求:大多数 dpkg 命令需要 root 权限,建议使用
sudo - 依赖问题:dpkg 不自动处理依赖关系,需要使用 APT 来解决依赖
- 配置文件冲突:升级包时可能出现配置文件冲突,需手动处理
- 强制操作:使用
--force-* 选项时要谨慎,可能导致系统不稳定 - 与 APT 的关系:日常使用建议使用 APT,dpkg 主要用于手动安装 deb 文件
总结
dpkg 是 Debian 系 Linux 发行版的底层包管理工具,负责处理 .deb 包的安装、删除和配置。虽然日常使用中更多使用 APT,但了解 dpkg 的基本用法对于系统管理和故障排除非常有用。