← Documentation index

ビルド環境を記録する(Recording the build environment)

エンドユーザーの使用するソフトウェアについて、開発者がバグを調査するときのために、ソフトウェアをビルドした方法を知る方法を提供するのが一般的になっています。 たとえば「このソフトウェアについて」のダイアログや、--version フラグを指定して実行した場合の出力には、ビルド環境の情報が含まれているのです。

再現性のあるビルドにおいては、ビルド結果と無関係な ビルド環境 にするか、配布したソフトウェアと完全に同じ結果を生成できる内容にするか、のいずれかになります。

ビルド環境に関連する全ての情報は、開発プロセスの一部として定義したり、ビルドプロセスを実行しながら記録しなければなりません。

ファイル形式

記録した内容はルドしたソフトウェアそのものと分離したほうが、配布するときに簡単に分離できるので便利です。 ソフトウェア自体と無関係な部分を特定するのに役立ちます。

この分離したファイルを buildinfo と呼びます。 ただし、配布用のファイル形式はエコシステムによって異なります。

Debian

Debian の builfinfo ファイルはテキストファイルです。 記述形式は control file format で、たいていの場合 OpenPGP による署名が必要です。 フィールドや設定値については、命名規則などと同じく Debian wiki の ReproducibleBuilds/BuildinfoFiles を参照してください。 具体例は buildinfo.debian.net で確認してください。

Arch Linux

Arch Linux のビルドツール makepkg は、複数の <key> = <value> を並べた .BUILDINFO を生成します。

Debian と違ってこのファイル単独で署名し、配布することはありません。 しかしパッケージアーカイブには同梱されます(つまりパッケージ署名が適用されることになります)。 具体例は、最新の makepkg でビルドした archlinux-keyring などを参照してください。

Tails

Tails は buildinfo ファイルを管理していませんが、Git リポジトリの vagrant ディレクトリ には同じバージョンの Tails を再ビルドするために必要な全ての情報が含まれています。

JVM

JVM エコシステムでは Maven レポジトリ(Maven Central や Google’s Android Repository など)でライブラリを公開、配布するのが一般的です。

Maven リポジトリに公開したアーティファクト(の公式ビルド)につて、ビルド環境を説明する buildinfo を提供することを推奨しています。 第三者評価を独立したリポジトリで共有できるからです。 具体的な方法については JVM を参照してください。


← Documentation index

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