ファイルの内容が同じ場合(同じ権限を持つルートが所有している場合)、initramfsがいつどこでビルドしても同じハッシュを持つことを望みます。 GNU cpioには、アーカイブ内のファイルのタイムスタンプを削除または設定するオプションは表示されません。再現可能な製品を得るためにcpioや他のアーカイブプログラムへの入力を処理する比較的標準的な方法はありますか?
それ以外にも、伝統的な「日付が与えられませんでした」タイムスタンプはありますか?ほとんどのソフトウェアが気づいていないものは何ですか?例えば、第0世代初め?
たとえば、initramfsの入力ディレクトリを検索し、すべてのタイムスタンプを手動で0に設定した場合、アーカイブを構築し、別のシステムから抽出した後、プロセスを繰り返して再構築して同じファイルを取得できますか?
答え1
最新バージョンのGNUには、必要な操作をある程度実行するフラグがcpio
あります。--reproducible
私の理解は非決定的なツールの削除タイムスタンプ要件は事後に処理されます。touch
もちろん、梱包前に時間を設定することもできます。
答え2
これを行うためにこれを使用できますstar
。これはfind
に基づいていますlibfind
。
たとえば、次のようになります。
star -c H=cpio -find somedir -chmtime 2020-05-20T12:10:12 > archive.cpio
もちろんfind
、必要に応じてさまざまなタイムスタンプに対して複雑なルールを使用できます。
確認するhttp://sourceforge.net/projects/schilytools/files/star
最新のtarballから最新のソースコードを入手してくださいschilytools
。
注:次の内容は広告のように見えますが、この情報は要求されており、最初からオープンソースでした。最も古い無料の実装なので、よく知らstar
れている必要があります。 1982年に始まり、2020年現在38年になりました。UNIX
tar
star
tar
私が知っていることの中で、最も成熟した完全な機能を備えた実装です。他の実装では、アーカイブ形式の拡張の概念をコピーすることがよくあり、これは他の人が導入して使用する属性プレフィックスとして識別されますstar
。SCHILY.*
star
32では、最高速度のために構成可能なFIFOを共有する2つのプロセスに分割される。star -copy
他の既知のUNIXツリーのコピー方法よりも高速です。
30年間、さまざまなアーカイブ形式をサポートし、自動的に検出してきました。
tar
17年間、これはさまざまなUNIXアーカイバー、cpio
pax
さらには互換性のないアーカイバーとのコマンドライン互換性を可能にする汎用アーカイブツールでしたGNU tar
。
16年以降find
からlibfind
。find
2年間、パス名の長さの制限は完全に消えました。
バラよりhttp://cdrtools.sourceforge.net/private/star.htmlそしてhttp://schilytools.sourceforge.net/man/man1/star.1.htmlより多くの情報を知りたいです。