安装 deb 软件包时怎么可能不需要 dpkg 呢?

安装 deb 软件包时怎么可能不需要 dpkg 呢?

以下信息似乎具有误导性。我对他们给出的例子感到困惑,如果你丢失了 dpkg (允许你处理 .deb 文件的程序),你可以使用其他命令 ar、tar 和 gzip 命令来下载 dpkg 本身的 .deb 文件吗?

如果这是真的,那么 dpkg 有什么特殊之处是其他命令所不具备的呢?

作为 Debian 系统管理员,您将定期处理 .deb 软件包,因为它们包含一致的功能单元(应用程序、文档等),有助于其安装和维护。因此,最好了解它们是什么以及如何使用它们。本章描述“二进制”和“源”包的结构和内容。前者是 .deb 文件,可以直接由 dpkg 使用,而后者包含源代码以及构建二进制包的说明。

从:http://debian-handbook.info/browse/wheezy/packaging-system.html

5.1.二进制包的结构 Debian 包格式的设计使得其内容可以在任何具有经典命令 ar、tar 和 gzip(有时是 xz 或 bzip2)的 Unix 系统上提取。这个看似微不足道的属性对于可移植性和灾难恢复非常重要。例如,想象一下,您错误地删除了 dpkg 程序,因此您无法再安装 Debian 软件包。 dpkg 本身就是一个 Debian 软件包,看起来你的系统就完蛋了……幸运的是,您知道包的格式,因此可以下载 dpkg 包的 .deb 文件 并手动安装(请参阅“工具”侧栏)。如果由于某种不幸,一个或多个程序 ar、tar 或 gzip/xz/bzip2 消失了,您只需从另一个系统复制丢失的程序(因为这些程序中的每一个都以完全自主的方式运行,没有依赖性,简单的复制就足够了)。

答案1

如果这是真的,那么 dpkg 有什么特殊之处是其他命令所不具备的呢?

其他命令不是包管理器的替代品,这就是 dpkg 如此特别的原因。您确实可以提取所有包的内容并将其放入根目录中,但这并不意味着它们将正常工作。您无法跟踪依赖关系、确定哪个包安装了哪些文件、安装后/安装前和删除脚本以及包管理器提供的许多其他漂亮功能。

他们在这一段中的意思是,如果你搞砸了大事,你可以下载文件,提取它们并恢复你的系统,作为适当工具的临时替代品:

这个看似微不足道的属性对于可移植性和灾难恢复

因此,DPKG 的重要性非常高,但他们已经设置了故障保护装置,以便在发生灾难时,您可以相当快地恢复。

答案2

Debian 管理员手册说:

幸运的是,您知道软件包的格式,因此可以下载 dpkg 软件包的 .deb 文件并手动安装...

这意味着 deb 文件可以手动下载(或从媒体复制),然后通过使用 tar、gzip 等手动从 deb 文件中提取文件来安装(如果缺少 dpkg 程序)

你问的是:

如果这是真的,那么 dpkg 有什么特殊之处是其他命令所不具备的呢?

来自dpkg 手册页:

dpkg 是一个用于安装、构建、删除和管理 Debian 软件包的工具。

来自tar 手册页:

Tar 从磁带或磁盘存档中存储和提取文件。

来自gzip 手册页:

Gzip 使用 Lempel-Ziv 编码 (LZ77) 减小指定文件的大小。

简而言之,dpkg 允许解压缩和提取,但也可以运行安装脚本、检查包之间的依赖关系、删除包、清除配置文件等等。

答案3

这意味着,如果删除,您可以从存储库dpkg下载其文件并手动提取并安装该文件。但是您应该使用这样的包管理器数据库来维护。使用and和,包管理器 ( ) 的数据库不会更新以反映更改。.debdpkg .debdpkgartargzipapt

为了保持系统稳定,dpkg除非绝对必要,否则请使用。

答案4

基本上,初始设置是这样完成的:Essential使用 ar 和 tar 从新安装的系统外部将所有标记的包及其依赖项提取到新目录中。

chroot生成的文件系统树包含进入其中并运行所需的所有内容dpkg。第一次调用将重新安装所有Essential软件包,用相同的内容覆盖文件,并注册已安装的软件包。

相关内容