Linux dpkg 命令

17 Mar 2025 | 6 分钟阅读

dpkg 是 free OS Debian 及其多个衍生版中的软件包管理基础软件。该软件用于安装、删除和提供 .deb 软件包的详细信息。

dpkg 是一个低级机制。一个更高级别的机制,即 APT,比 dpkg 工具更常用,因为它可以通过远程位置检索软件包,并处理典型的软件包关系,例如依赖解析。

APT (Advanced Package Tool) 的前端,如 synaptic (GTK) 和 aptitude (ncurse),可用于更友好的界面。

dpkg (Debian package) 提供了 dpkg 程序以及其他用于打包系统运行时工作的必要程序,例如 dpkg-trigger、dpkg-divert、dpkg-statoverride、dpkg-query、dpkg-split 和 dpkg-deb。此外,它还包含 start-stop-daemon 和 update-alternatives 等许多程序。

曾经有一个名为 install-info 的程序用于此目的,但后来被移除,因为它现在是单独开发和共享的。dpkg-dev (Debian package) 包含了大型构建工具。

在 Debian 中,它是基于 Debian 的系统和主要的软件包管理器。它用于安装、构建、删除和管理多个软件包。对于 dpkg,aptitude 是主要的前端。

dpkg 命令的语法如下。

语法

dpkg 简史

最初,dpkg 由 Ian Murdock 于 1994 年 1 月作为 Shell 脚本开发。然后,Carl Streeter、Ian Murdock 和 Matt Welsh 用 Perl 重写了该软件。之后,主要部分由 Ian Jackson 于 1994 年用 C 语言重写。dpkg 名称以前是 "Debian package" 的缩写。

dpkg 的开发工具

dpkg 的这些开发工具列出并解释如下:

  1. dpkg-dev 包含了一系列用于解包、创建和上传 Debian 源代码包所需的开发工具。它们包括:
  2. dpkg-source: 它打包和解包 Debian 软件包的源代码文件。
  3. dpkg-gencontrol: 它读取解包后的树形源代码 (Debian) 中的信息,并生成二进制软件包控制包,在 Debian/files 中为其创建一个条目。
  4. dpkg-shlibdeps: 它计算库的运行时依赖关系。
  5. dpkg-genchanges: 它读取解包后的树形源代码 (Debian) 中的信息,一旦构建完成,就会生成一个控制文件。
  6. dpkg-buildpackage: 它可以定义为一个控制脚本,用于自动构建软件包。
  7. dpkg-distaddfile: 它将文件添加到 Debian 文件中。
  8. dpkg-parsechangelog: 它读取修改文件,即解包后的树形源代码 (Debian) 的 changelog,并以方便的方式为这些修改生成准备好的结果,其中包含详细信息。

dpkg 的数据库

dpkg 的数据库位于 /var/lib/dpkg 目录。这个 "status" 文件包含了我们当前系统中安装的软件列表。此外,此数据库中没有关于存储库的详细信息。

dpkg 示例

许多 Linux 发行版(如 Mint、Ubuntu、Kali、Knoppix 等)的母体操作系统 (Debian Linux/GNU) 使用许多包管理器,例如 dpkg-split、dpkg-deb、deselect、tasksel、synaptic、aptitude、apt 和 dpkg。

在描述 dpkg 命令之前,我们将介绍所有这些包管理器。

APT 命令

它是 Advanced Package Tool 的缩写。它不直接处理 deb 包,而是直接工作。但是,它通过 "/etc/apt/sources.list" 文件中描述的位置与 deb 归档一起工作。

能力倾向

对于 Debian,aptitude 可以定义为一个(文本模式)包管理器,它是 'apt' 的前端。它使所有用户都能轻松管理软件包。

Synaptic

它是一个(图形界面)包管理器,可以高效地安装、升级和卸载软件包。

Tasksel

它使所有用户能够为特定的任务安装所有相应的软件包。

Deselect

它是一个(菜单驱动)的包管理工具。最初,它是在首次安装时使用的,现在已被 aptitude 取代。

Dpkg-deb

它与 Debian 归档进行交互。

Dpkg-split

它有助于将大文件合并和分割成小文件块,以便存储在较小的介质上,例如软盘。

使用 dpkg 命令安装软件包

在 Ubuntu 中,此命令最常见的用法是安装软件包。在 Debian 或 Ubuntu 中,我们可以借助命令选项 dpkg -i 来安装任何 deb 包。

我们可以在这里安装软件包


Linux dpkg command

使用 dpkg 安装

dpkg 的包管理器用于管理 Debian 及其许多衍生版(如 Linux Mint 和 Ubuntu)中的软件包。默认情况下,Debian 及其衍生版已安装 dpkg 包,可用于安装、构建和删除 .deb 软件包。

使用 dpkg 安装 .deb 软件包


Linux dpkg command

请确保我们通过 .deb 软件包所在的目录执行上述命令。如果我们从其他目录执行上述命令,则需要在下方指定 .deb 文件的完整路径:


Linux dpkg command

dpkg 命令只能安装指定的软件包,而不能安装其依赖项。如果我们安装的任何软件包需要一些依赖项,我们将收到一个错误。此错误可能如下所示:

dpkg: 处理软件包时出错

dpkg 也不会安装软件包,并将其置于损坏且无法配置的状态。

在终端中,我们可以执行以下命令来解决上述错误:

此命令将处理损坏的软件包,并安装所需的依赖项,前提是它们存在于我们系统的存储库中。

删除软件包

如果我们不再需要在计算机上使用某个服务或程序,就没有必要保留它。我们需要指定已安装软件包的名称来删除已安装的软件包,而不是指定用于安装该软件包的 .deb 软件包的名称。

要搜索软件包名称,我们可以使用以下命令,并使用与软件包名称对应的关键字:

对于 Skype 软件包,我们可以简单地使用 skype。


Linux dpkg command

一旦我们找到确切的已安装软件包名称,我们就可以借助 --r 或 --remove 选项来卸载或删除计算机上的服务或程序。


Linux dpkg command

更新我们的存储库

dpkg 命令的存储库存储了我们 Debian 或 Ubuntu Linux 发行版上可供安装的所有软件包。

由于这些软件包是本地存储的,我们经常会获得某个程序的老版本,即使新版本已经发布。这需要一种方法来更新我们的存储库。

另一个选项,即 dpkg --update-avail,可以满足我们的需求。它将分析(在线)存储库,并将每个更新的软件包下载到我们的本地存储库。

我们将按如下方式将本地存储库更新到最新版本:


Linux dpkg command

查看已安装软件包列表

在安装任何新软件包之前,我们可能希望列出系统上所有已安装的软件包。为此,我们可以使用 dpkg 命令,并使用 --l 或 --list 选项,如下所示:


Linux dpkg command

它将向我们显示系统上已安装软件包的列表。

使用 dpkg 验证软件包安装

虽然我们可以通过在 Ubuntu 的 Dash 菜单中搜索来验证软件包的安装。如果它在那里,则可以验证软件包的安装。

但是,dpkg 命令也允许我们验证软件包的安装。我们可以简单地输入 dpkg 并使用 --s 或 --status 来验证软件包的安装。


Linux dpkg command

清理软件包

我们可以清理软件包。它将卸载软件并删除所有配置文件,而不是将其保留下来,这要归功于 -P 选项。

命令如下:


Linux dpkg command

我们可以使用 -s 选项快速检查软件包是否安装成功。

命令如下:


Linux dpkg command

我们可以通过添加 -c 选项来检查 .deb 文件的内容。

命令如下:


Linux dpkg command

我们可以使用 --unpack 选项将 .deb 文件解包以进行操作和查看其内容。

命令如下:


Linux dpkg command

如果我们对 .deb 文件(已解包)进行了修改,我们可以使用 --configure 选项重新打包 .deb 文件中的所有内容。

命令如下:


Linux dpkg command

如果软件包已安装并构建完成,我们可能需要选择一个命令,即 dpkg-reconfigure,以便进一步配置设置。

命令如下:


Linux dpkg command