可以依赖使用 bzip2 压缩的文件是确定性的(可重现的)吗?

Jon*_*oss 7 checksum bzip2 reproducible-build

我试图确定使用bzip2压缩需要 100% 可重现的文件是否存在任何潜在问题。具体做法是:罐的元数据(名称/索引节点,的lastmod日期等)或任何其他原因相同的文件内容,以产生不同的校验和对所得.bz2的存档?

例如,除非使用gzip,否则默认情况下不是确定性的-n

到目前为止,我的粗略测试表明,在给定相同的输入数据(无论元数据、平台、文件系统等)的情况下,bzip2 确实始终如一地生成相同的文件,但如果有更多轶事证据就更好了。

Ste*_*itt 7

bzip2文件仅包含基本格式签名、压缩数据和解压缩该数据所需的信息。它们不包含任何特定于文件的元数据;相反,它们依赖于压缩文件的元数据(因此file.bz2被解压缩为file,时间戳为file.bz2,无论原始文件名和原始时间戳如何)。

压缩的一部分可能会发生变化,即输入随机化;但这在实践中已被禁用很长时间,并且当前版本bzip2不会随机化他们的输入。

因此,输出bzip2仅取决于输入数据和压缩级别。输出是确定性的。

我不确定你会找到所有这些的权威来源。我能提供的最好证据是bzip2Debian 可重现构建说明中没有提及任何内容。bzip2Debian中使用,因此,如果它已经造成的问题将得到一提,以同样的方式gzip