tarballとsha1sumの比較

tarballとsha1sumの比較

.tgz/tarball を使用して .tgz/tarball を作成します$(npm pack)

次に、次を実行します。

sha1sum oresoftware-npp-0.0.1001.tgz 

私は得る:

77c58da68593dcdcd14bb16a37f5f63ef42bab63  oresoftware-npp-0.0.1001.tgz

このshasumをリモートサーバーの他のtarballと比較したいと思います。以下を使用して、NPMレジストリでtarballのshasumを照会できます。

 npm view @oresoftware/npp@latest dist.shasum

生産する:

3c2e7328110ba57e530c9938708b35bde941c419

このshasumは上記の他のshasumとは異なりますが、.tgz tarballファイルの内容を変更したために予想されます。

私の問題には3つの層があります。

  1. .tgzファイルのsha1sumを生成するときにnpm packこれが正しい方法ですか? tarファイルを生成した後にsha1sumを生成しますか?

  2. tarballの内容が同じであれば、sha1sumも同じであると仮定します。ファイルが異なる時点で作成/変更された場合、同じ内容を持っていてもファイルは異なりますか?

  3. 2つのタールボールに同じ内容があるかどうかを確認するより良い方法はありますか?それが私がしたいすべてです。

ベストアンサー1

NPM レジストリによって提供されるチェックサムは、2 つの機能を提供します。つまり、ダウンロードしたファイルが破損していないことを確認でき、帯域外チェックサムを確認できる場合は、ダウンロードしたファイルが変更されていないことを確認できます。 NPMアーカイブが再現可能に構築されていない限り、チェックサムを使用すると、使用しているアーカイブに必要npm packな内容が含まれていることを確認できません。

Tarballの問題は、メタデータ(保存されているファイルの所有権、権限、およびタイムスタンプ)が含まれていることですtar。そして最も重要なことメタデータ圧縮。これらの値がすべて事前合意されている場合は、ファイルシステムから取得した値を上書きするように指定できますが、これは事前合意が必要です。

2つのランダムターボールの内容を比較する唯一の信頼できる方法は、その内容を抽出して比較することです。

おすすめ記事