当使用 dpkg 的“--unpack”选项时,.deb 文件解压后的内容在哪里?

当使用 dpkg 的“--unpack”选项时,.deb 文件解压后的内容在哪里?

关于dpkg命令,一些教程确实提到了该--unpack选项。根据 果酱 (1) dpkg.1这表明

--unpack package-file...
   Unpack the package, but don't configure it. If --recursive or -R option is specified,
   package-file must refer to a directory instead.

那么如何测试,从MySQL APT 存储库页面就可以获取mysql-apt-config_0.8.24-1_all.deb文件。因此在Downloads目录中我执行了以下命令:

sudo dpkg --unpack mysql-apt-config_0.8.24-1_all.deb

它适用于以下消息

(Reading database ... 238377 files and directories currently installed.)
Preparing to unpack mysql-apt-config_0.8.24-1_all.deb ...
Unpacking mysql-apt-config (0.8.24-1) over (0.8.24-1) ...

即使已安装 MySQL。

问题

  • 哪儿是解压文件的内容.deb

简单执行命令ls只会显示当前.deb文件。我期望一种萃取。我假设使用了某种默认目录或其他东西。

如果使用该-c选项,就可以看到.deb文件的目录,我假设该--unpack选项会解压.deb文件 - 如果我对后者的假设不正确,请纠正我。

答案1

--unpack如果你立即查​​看手册页中的相关部分(针对--install):

安装包括以下步骤:

  1. 提取新包的控制文件。

  2. 如果在新安装之前安装了同一包的另一个版本,请执行旧包的 prerm 脚本。

  3. 如果包提供了,则运行 preinst 脚本。

  4. 解压新的文件,同时备份旧的文件,这样如果出现问题可以恢复。

  5. 如果在新安装之前安装了同一软件包的另一个版本,请执行旧软件包的 postrm 脚本。请注意,此脚本在新软件包的 preinst 脚本之后执行,因为新文件是在删除旧文件的同时写入的。

  6. 配置软件包。请参阅 --configure 以获取有关如何执行此操作的详细信息。

第 4 步似乎表明解包意味着将软件包中的文件放置在系统最终状态下它们应该在的位置。因此,如果软件包应该安装/usr/bin/foo/etc/bar/baz文件,则解包将把相应的文件放置在这些位置。

如果您希望将文件解压到当前目录或类似目录,而不是将它们解压到最终安装目标,则选项是-x--extract

-x, --extract archive directory
   Extract the files contained by package.

-X, --vextract archive directory
   Extract and display the filenames contained by a package.

相关内容