揮発性のある入力データは消える場合がある(Volatile inputs can disappear)
ネットワークから受信したデータは、たとえそう見えなくても、揮発性のあるデータとして扱うことになります。 ビルドシステムをリモートデータに依存させるべきではありません。
どうしても必要な場合は次のようにします。
- 暗号学的ハッシュ関数に基づくチェックサムを算出し、完全性を保証する(ensure integrity using cryptographic checksums,)
- バックアップを保存する(keep backups.)
データ取得に失敗した場合に参照する場所を用意して、同時にバックアップも用意しておくのが理想的です。
FreeBSD の Ports は参考になると思います。
Port の description には MASTER_SITES
(DISTFILES
と distinfo
とそれぞれに対する暗号学的ハッシュ関数に基づくチェックサムを記録したファイルを取得できる場所の一覧)が含まれています。
FreeBSD のインフラは、全ての distfiles の複製をミラーネットワークから利用できることを保証しています。
port (パッケージ)をビルドするとき、元の master site へアクセスできないときは、ミラーネットワークにアクセスします。
Introduction
Achieve deterministic builds
- SOURCE_DATE_EPOCH
- 確実なビルドシステム(Deterministic build systems)
- 揮発性のある入力データは消える場合がある(Volatile inputs can disappear)
- 入力データの順序を固定する(Stable order for inputs)
- 値を初期化する(Value initialization)
- バージョン情報(Version information)
- タイムスタンプ(Timestamps)
- タイムゾーン(Timezones)
- ロケール(Locales)
- アーカイブのメタデータ(Archive metadata)
- 出力データの順序を固定する(Stable order for outputs)
- 無作為性(Randomness)
- ビルド時のファイルシステムパス(Build path)
- システムイメージ(System images)
- JVM
Define a build environment
- ビルド環境に含む要素(What's in a build environment?)
- ビルド環境を記録する(Recording the build environment)
- ビルド環境の定義における戦略(Definition strategies)
- Proprietary operating systems
Distribute the environment
Verification
Specifications
Follow us on Twitter @ReproBuilds, Mastodon @reproducible_builds@fosstodon.org & Reddit and please consider making a donation. • Content licensed under CC BY-SA 4.0, style licensed under MIT. Templates and styles based on the Tor Styleguide. Logos and trademarks belong to their respective owners. • Patches welcome via our Git repository (instructions) or via our mailing list. • Full contact info