「再現性のあるビルド」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
 
34行目: 34行目:
 
* * ダウンロードしたパッケージまたは pacman キャッシュからのパッケージで再現を実行します。理想的には、{{ic|repro -d}} を使用してディフォスコープ出力を取得します。たとえば、{{ic|repro -d /var/cache/pacman/pkg/curl-7.73.0-1-x86_64.pkg.tar.zst}}
 
* * ダウンロードしたパッケージまたは pacman キャッシュからのパッケージで再現を実行します。理想的には、{{ic|repro -d}} を使用してディフォスコープ出力を取得します。たとえば、{{ic|repro -d /var/cache/pacman/pkg/curl-7.73.0-1-x86_64.pkg.tar.zst}}
 
{{Note|https://reproducible.archlinux.org [https://github.com/kpcyrd/rebuilderd/blob/7afb25d52ec12a01c360098c51967099241f90e2/worker/rebuilder-archlinux.sh は、すべてのテストを実行しているため、{{ic|check()}} ステップをスキップします] すべてのパッケージが不安定すぎます。これにより、{{ic|check()}} に Python パッケージなどの副作用がある場合、偽の再現不可能なパッケージステータスが作成されます。}}
 
{{Note|https://reproducible.archlinux.org [https://github.com/kpcyrd/rebuilderd/blob/7afb25d52ec12a01c360098c51967099241f90e2/worker/rebuilder-archlinux.sh は、すべてのテストを実行しているため、{{ic|check()}} ステップをスキップします] すべてのパッケージが不安定すぎます。これにより、{{ic|check()}} に Python パッケージなどの副作用がある場合、偽の再現不可能なパッケージステータスが作成されます。}}
* Arch Linux のパッケージングまたはアップストリームに問題があるかどうかを調査し、[[/Status|ステータスページ]] に問題を追加できます。詳細については、[https://reproducible-builds.org/docs/Reproducible Builds Web サイト] をご覧ください。
+
* Arch Linux のパッケージングまたはアップストリームに問題があるかどうかを調査し、[[再現性のあるビルド/ステータス|ステータスページ]] に問題を追加できます。詳細については、[https://reproducible-builds.org/docs/Reproducible Builds Web サイト] をご覧ください。
   
 
=== testing.reproducible-builds.org インフラストラクチャの問題に取り組む ===
 
=== testing.reproducible-builds.org インフラストラクチャの問題に取り組む ===

2023年6月24日 (土) 21:37時点における最新版

Arch Linux は現在、すべてのパッケージを再現可能にすることに取り組んでいます。これにより、ユーザーや研究者は Arch Linux から配布されたパッケージを検証できるようになります。再現可能なビルドの正確な定義とその利点については、プロジェクト Web サイト をご覧ください。

ビルドを検証

リポジトリとリビルド

実験的な rebuilderd インスタンスが、ステータスページ を備えた独自のインフラストラクチャ上にセットアップされました。Rebuilderd はリポジトリパッケージを再構築し、それらがビットごとに同一であるかどうかを確認します。再現できない場合は、ツールにバグがあるか、パッケージが再現できないか、パッケージが適切にビルドされていないかのいずれかです。

既知の問題のリストは /Status にあります。

リビルドとバリエーションのある別のリビルド

Builds プロジェクトは Arch Linux パッケージを再構築し、異なる環境での別の再構築と比較します。パッケージのステータスと環境のバリエーションは、Arch Linux 専用ページ にリストされています。

手助けをする

ツーリング

repro のバグ修正と機能追加にご協力ください。

Rebuilderd インスタンスの実行

Arch Linux パッケージをビルドするための Rebuilderd のセットアップ は、リポジトリパッケージを個別に検証するのに役立ちます。

再現によるパッケージの検証と問題点の発見

これを解決するための優れた方法は、再現できないパッケージを見つけて、それを再現できるようにする方法を考えることです。

  • Arch Linux パッケージをダウンロードするか、Arch Linux Archive から入手します。
  • * ダウンロードしたパッケージまたは pacman キャッシュからのパッケージで再現を実行します。理想的には、repro -d を使用してディフォスコープ出力を取得します。たとえば、repro -d /var/cache/pacman/pkg/curl-7.73.0-1-x86_64.pkg.tar.zst
ノート: https://reproducible.archlinux.org は、すべてのテストを実行しているため、check() ステップをスキップします すべてのパッケージが不安定すぎます。これにより、check() に Python パッケージなどの副作用がある場合、偽の再現不可能なパッケージステータスが作成されます。
  • Arch Linux のパッケージングまたはアップストリームに問題があるかどうかを調査し、ステータスページ に問題を追加できます。詳細については、Builds Web サイト をご覧ください。

testing.reproducible-builds.org インフラストラクチャの問題に取り組む

Arch ユーザーは、継続的再現環境 を参照して、再現可能なビルドの問題に貢献することができます。解決するには、さまざまな問題があります。

  • FTBS (ソースからのビルドに失敗): ビルドの失敗をローカルで再現し、パッケージを built from a clean chroot できない場合はバグレポートを作成します (extra-x86_64 -build または multilib-build)
  • ソースのダウンロードに失敗し、問題を再現し (makepkg -o -d)、Arch バグトラッカーでバグレポートを作成しました。

※再現に失敗しました。ローカルでは、reprotest を使用してパッケージを再現できます。すべてのバリエーションを使用できるわけではないことに注意してください。単純な時間関連のテストの場合:

$ reprotest --variations '+time' 'sudo extra-x86_64-build' '*.pkg.tar.zst'

パッケージが再現できないのにはさまざまな理由が考えられますが、詳しく調べる前に、上流のリポジトリまたは Debian で再現可能なステータスを確認してください。

この記事またはセクションは情報が古くなっています。
理由: glibc 2.35-6 ships with C.UTF-8 included. (Discuss)
  • Failed to run tests, これらの障害はテスト環境に大きく依存します。おそらく、LANG=C が設定されており、Arch が LANG=C.UTF-8 をサポートしていないことが原因です。

継続的再生環境を実行するコードに興味がある場合は、最初のビルド コードがここから始まります。salsa

ノート: testing.reproducible-builds.org の継続的再現環境では、公式の Arch パッケージは再現されません。その目的は、パッケージを曖昧にし、できるだけ多くのバグを引き起こして上流に報告できるようにすることだけです。

既知の問題点

GPG 検証

最新のキーリングを使用しているため、パッケージャーがキーリングから削除されているか失効しているため、GPG キーが検証されず、必要なアーカイブ内のパッケージが検証できない失効したキーで署名されている可能性があるため、GPG キーが検証されない再構築シナリオが発生する可能性があります。その場合ビルドは失敗します。

コンタクト

  • #archlinux-reproducible — Arch Linux での再現性のあるビルドの進行状況を伝えるメインチャネル