![安装 deb 软件包时怎么可能不需要 dpkg 呢?](https://linux22.com/image/40506/%E5%AE%89%E8%A3%85%20deb%20%E8%BD%AF%E4%BB%B6%E5%8C%85%E6%97%B6%E6%80%8E%E4%B9%88%E5%8F%AF%E8%83%BD%E4%B8%8D%E9%9C%80%E8%A6%81%20dpkg%20%E5%91%A2%EF%BC%9F.png)
以下信息似乎具有误导性。我对他们给出的例子感到困惑,如果你丢失了 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和,包管理器 ( ) 的数据库不会更新以反映更改。.deb
dpkg
.deb
dpkg
ar
tar
gzip
apt
为了保持系统稳定,dpkg
除非绝对必要,否则请使用。
答案4
基本上,初始设置是这样完成的:Essential
使用 ar 和 tar 从新安装的系统外部将所有标记的包及其依赖项提取到新目录中。
chroot
生成的文件系统树包含进入其中并运行所需的所有内容dpkg
。第一次调用将重新安装所有Essential
软件包,用相同的内容覆盖文件,并注册已安装的软件包。