我用$(npm pack)创建了一个. .tgz/tarball。
然后我跑:
sha1sum oresoftware-npp-0.0.1001.tgz 我得到了:
77c58da68593dcdcd14bb16a37f5f63ef42bab63 oresoftware-npp-0.0.1001.tgz我想比较一下远程服务器上的另一个tarball。我可以通过以下方式查询国家预防机制登记册上的tarball的shasum:
npm view @oresoftware/npp@latest dist.shasum产生的结果:
3c2e7328110ba57e530c9938708b35bde941c419这个shasum与上面的另一个不同,但这是预期的,因为我更改了.tgz tarball文件的内容。
我的问题有三重:
发布于 2018-08-04 18:59:46
NPM注册中心提供的校验和提供了两个功能:它们允许您验证下载是否已损坏;如果您能够验证带外校验和,则下载的文件未被更改。除非NPM档案是可重复构建的,否则校验和不允许您验证您使用npm pack构建的存档包含它应该包含的内容。
tarballs的问题在于它们包含元数据:由tar存储的存储文件的所有权、权限和时间戳,以及最上面的压缩元数据。如果所有这些值都是预先商定的,则可以指定它们来覆盖从文件系统获得的值,但这需要预协议。
要比较两个任意焦油球的内容,唯一可靠的方法是提取它们的内容并进行比较。
发布于 2018-08-04 21:22:57
这种校验和比较是否对您有用,取决于您使用的是什么tar命令,以及使用的tar存档类型。
例如,自1986年以来,star包含了所有三种时间戳,这使得tar档案在相同内容下也有所不同,因为上一次访问时间不同。
随着2001年新的POSIX tar增强,还有三个时间戳--取决于tar实现是实现原始标准还是以后的更改。
如果您不关心时间戳,比较归档校验和不是正确的方法。
因此,比较两个tar档案并从中进行陈述通常是不可能的。
但是,如果您可以打开这两个档案中的一个,那么有一种很好的方法可以将内容和元数据与用于比较的一组可配置的元数据进行比较。使用star -diff,请参阅http://schilytools.sourceforge.net/man/man1/star.1.html
如果你打电话给:
star -diff -v diffopts=!times < archive.tar.gz比较文件内容和除所有时间戳以外的所有元数据。
https://unix.stackexchange.com/questions/460539
复制相似问题