3. dpkg 命令

dpkg 是 Debian 和 Ubuntu 等 Linux 发行版中底层的软件包管理工具,主要用于安装、构建、删除和管理离线软件包( .deb 格式的软件包)。

dpkg 需要在命令行模式下运行。我们在使用 apt 命令安装软件包时,apt 命令也是间接的调用 dpkg 命令来安装软件包的。

dpkg 的特点:

  1. 直接操作本地文件,这个文件通常是 .deb 结尾的文件。
  2. 不处理依赖关系,如果当前的 .deb 包需要先安装另外一个 .deb 包。则会报错并停止安装。

命令格式

dpkg [选项] [参数]

如果运行此命令的用户没有 root 权限,还需要在 前面添加 sudo 命令(获取管理员权限命令)来运行 dpkg 命令。格式如下:

sudo dpkg [选项] [参数]

dpkg 常用选项

选项
说明
-i 包文件名.deb
安装指定的软件包。
-r 包名
卸载软件包(保留配置,下次安装还可以使用)。
-P 包名
清除软件包(删除配置,彻底删除)。
-l
列出已经安装的软件包。
-L
列出该软件包在系统上安装的所有文件。
-S 文件路径
查询某个文件属于哪个软件包。
-I 包文件名.deb
查看本地 .deb 文件的信息(版本,描述等)。

示例:

使用 dpkg 安装和卸载 vim。

1、 使用 apt download tree 命令下载 tree 命令的安装包 ``

weimingze@mzstudio:~$ sudo apt download tree
...  # 下载过程(略)
weimingze@mzstudio:~$ ls -l tree*
-rw-r--r-- 1 root root 47130 Apr  9  2024 tree_2.1.1-2ubuntu3_amd64.deb

2、使用 dpkg -i 命令安装 tree

weimingze@mzstudio:~$ sudo dpkg -i tree_2.1.1-2ubuntu3_amd64.deb
Selecting previously unselected package tree.
(Reading database ... 152256 files and directories currently installed.)
Preparing to unpack tree_2.1.1-2ubuntu3_amd64.deb ...
Unpacking tree (2.1.1-2ubuntu3) ...
Setting up tree (2.1.1-2ubuntu3) ...
Processing triggers for man-db (2.12.0-4build2) ...

3、使用 dpkg -l 命令查看已经安装的软件包

weimingze@mzstudio:~$ dpkg -l tree
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version        Architecture Description
+++-==============-==============-============-================================>
ii  tree           2.1.1-2ubuntu3 amd64        displays an indented directory t>
lines 1-6/6 (END)

3、使用 tree 查看 /etc/apt/sources.list.d/ 文件夹的内容

weimingze@mzstudio:~$ tree /etc/apt/sources.list.d/
/etc/apt/sources.list.d/
├── ubuntu.sources
├── ubuntu.sources.curtin.orig
└── ubuntu.sources.save

1 directory, 3 files

4、使用 dpkg -r 或 dpkg -P 命令卸载 vim

weimingze@mzstudio:~$ sudo dpkg -P tree
(Reading database ... 152263 files and directories currently installed.)
Removing tree (2.1.1-2ubuntu3) ...
Processing triggers for man-db (2.12.0-4build2) ...
weimingze@mzstudio:~$ tree
Command 'tree' not found, but can be installed with:
sudo snap install tree  # version 2.1.3+pkg-5852, or
sudo apt  install tree  # version 2.1.1-2
See 'snap info tree' for additional versions.

删除后执行 tree 命令已经不存在了,可见 tree 命令已经彻底删除。

练习:

  1. 使用 apt 下载 htop 的安装包,再使用 dpkg 安装和卸载 htop。
    • htop 是用来显示系统资源占用状况的命令。
  2. 使用 apt 下载 wget 的安装包,再使用 dpkg 安装和卸载 wget。
    • wget 是用来下载网络资源的强大命令,他支持通过 HTTPHTTPSFTP 协议下载文件并支持断点续传。