Logo
Section 1 / 4

提取 Debian 包

学习如何提取 Debian 包及其包含的内容。

导入

提取 Debian 包

学习如何提取 Debian 包及其包含的内容。

Debian 软件包采用二进制格式,因此在文本编辑器中查看它们毫无意义。然而,该格式基于开放标准,有相应的工具可供检查和创建这些软件包。

文件名

撰写本文时,使用链接 https://packages.debian.org/stretch/bash 从某个镜像站点下载了适用于 amd64 架构的当前版本软件包。

下载的文件名为 bash_4.4-5_amd64.deb。该文件名包含四个部分:

  • 软件包名称 bash。
  • 版本号 4.4-5。
  • 架构 amd64。
  • 文件扩展名 .deb。

文件名、版本号和架构之间用下划线 _ 分隔。

...
文件名

由多个单词组成的软件包名称使用连字符 - 来分隔单词。例如,git-sh 软件包提供了一个专为与版本控制系统 git 配合使用而优化的 shell。版本号通常由上游版本号、一个连字符以及 Debian 构建编号组成。

内容

Debian 软件包是一个 ar 归档文件,其中包含三个文件:

  • debian-binary
  • control.tar.gz
  • data.tar.xz

第一个文件包含纯文本形式的格式版本号。自 2003 年以来,该版本号一直为 2.0,我们预计它在可预见的未来不会发生变化。

control.tar.gz 包含多个元数据文件,而 data.tar.xz 包含将被安装到目标机器文件系统中的文件。

...
bash_4.4-5_amd64.deb 软件包的内容

我们可以使用如下命令提取这些文件:

1$ ar xv bash_4.4-5_amd64.deb

以下是来自 bash_4.4-5_amd64.deb 提取的文件:

从 bash_4.4-5_amd64.deb 软件包中提取的文件

1x - debian-binary 2x - control.tar.gz 3x - data.tar.xz

你可以在本课末尾的“实验区”中查看已提取的内容。

debian-binary 文件

debian-binary 文件包含一行纯文本,表示所使用的文件格式版本号,目前为 2.0。

控制归档文件

control.tar.gz 是一个经过 gzip 压缩的 tar 归档文件,但也可能是 xz 压缩的,扩展名表明了所使用的压缩算法。我们可以使用 tar 命令行程序来提取其中的文件:

1$ tar xvf control.tar.gz

以下是提取出的文件:

从 control.tar.gz 中提取的文件

1./ 2./conffiles 3./control 4./md5sums 5./postinst 6./postrm 7./preinst 8./prerm

数据归档文件

data.tar.xz 文件(旧版本中为 data.tar.gz,使用稍低效的 gzip 压缩)包含将在安装时逐个复制到目标文件系统的文件:

1$ tar tf data.tar.xz | head

以下是 data.tar.xz 中的文件内容:

从 data.tar.xz 中提取的文件

1./ 2./bin/ 3./bin/bash 4./etc/ 5./etc/bash.bashrc 6./etc/skel/ 7./etc/skel/.bash_logout 8./etc/skel/.bashrc 9./etc/skel/.profile 10./usr/

我们也可以直接使用命令 dpkg-deb -c <文件名> 从 .deb 文件中获取这些文件列表。

该归档文件包含文件和目录的权限、所有者和所属组信息,但仅以数字形式的 UID 和 GID 表示。

注意: 当 dpkg 安装软件包时,它会验证每个文件(不包括目录)是否已被其他软件包安装过,如果发现文件冲突,则会报错。

实验区

  • 提取 Debian 软件包文件的命令:

    1$ ar xv bash_4.4-5_amd64.deb
  • 查看 debian-binary 文件内容的命令:

    1$ cat debian-binary
  • 提取 control.tar.gz 归档文件的命令:

    1$ tar xvf control.tar.gz
  • 提取 data.tar.xz 归档文件的命令:

    1$ tar tf data.tar.xz | head
  • 提取 Debian 软件包文件的命令:

    1$ ar xv bash_4.4-5_amd64.deb
  • 查看 debian-binary 文件内容的命令:

    1$ cat debian-binary
  • 提取 control.tar.gz 归档文件的命令:

    1$ tar xvf control.tar.gz
  • 提取 data.tar.xz 归档文件的命令:

    1$ tar tf data.tar.xz | head

让我们在下面的终端中尝试上述命令:

Terminal

/dev/null && chpasswd <.password.txt && usermod -aG sudo user && cp -r /usercode/* /home/user && chown user:user /home/user/ -R && cp -r bash_4.4-5_amd64.deb /home/user && rm bash_4.4-5_amd64.deb && su - user" mode="edit">

Debian 软件包概述

提取控制压缩包