.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つの層があります。
.tgzファイルのsha1sumを生成するときに
npm pack
これが正しい方法ですか? tarファイルを生成した後にsha1sumを生成しますか?tarballの内容が同じであれば、sha1sumも同じであると仮定します。ファイルが異なる時点で作成/変更された場合、同じ内容を持っていてもファイルは異なりますか?
2つのタールボールに同じ内容があるかどうかを確認するより良い方法はありますか?それが私がしたいすべてです。
ベストアンサー1
NPM レジストリによって提供されるチェックサムは、2 つの機能を提供します。つまり、ダウンロードしたファイルが破損していないことを確認でき、帯域外チェックサムを確認できる場合は、ダウンロードしたファイルが変更されていないことを確認できます。 NPMアーカイブが再現可能に構築されていない限り、チェックサムを使用すると、使用しているアーカイブに必要npm pack
な内容が含まれていることを確認できません。
Tarballの問題は、メタデータ(保存されているファイルの所有権、権限、およびタイムスタンプ)が含まれていることですtar
。そして最も重要なことメタデータ圧縮。これらの値がすべて事前合意されている場合は、ファイルシステムから取得した値を上書きするように指定できますが、これは事前合意が必要です。
2つのランダムターボールの内容を比較する唯一の信頼できる方法は、その内容を抽出して比較することです。