我知道典型的 .deb 文件包含三个文件:
debian-binary
control.tar.gz
data.tar.gz
Run Code Online (Sandbox Code Playgroud)
有些是 xz 压缩而不是 gzip (control.tar.xz、data.tar.xz)。
Debian 文件支持哪些其他压缩?debian 安装程序如何知道使用哪种解压?
如果我想添加对另一种压缩的支持(例如,zopfli - https://github.com/google/zopfli)。是否有 debian 安装程序的源代码可用,我可以修改它以使此添加成为可能?
从这篇博文来看,它似乎dpkg-deb可以处理压缩。从14.04man dpkg-deb开始:
-Zcompress-type
Specify which compression type to use when building a package.
Allowed values are gzip, xz, bzip2, lzma, and none (default is
xz).
Run Code Online (Sandbox Code Playgroud)
在15.10中:
-Zcompress-type
Specify which compression type to use when building a package.
Allowed values are gzip, xz (since dpkg 1.15.6), bzip2
(deprecated), lzma (since dpkg 1.14.0; deprecated), and none
(default is xz).
Run Code Online (Sandbox Code Playgroud)
在22.04中,删除并lzma添加了:bzip2zstd
-Zcompress-type
Specify which compression type to use when building a package. Allowed values are
gzip, xz (since dpkg 1.15.6), zstd (since dpkg 1.19.0.5ubuntu2) and none (default is
zstd).
Run Code Online (Sandbox Code Playgroud)
源代码可以在Debian Aliothdpkg浏览。据我所知,它也在某些地方使用,如果不支持 zopfli,请准备好向GNU tar添加对 zopfli 的支持。tartar