コンテンツにスキップ

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

提供: ArchWiki
削除された内容 追加された内容
Kgx (トーク | 投稿記録)
Kgx (トーク | 投稿記録)
17行目: 17行目:
[https://reproducible-builds.org/Reproducible Builds] プロジェクトは Arch Linux パッケージを再構築し、異なる環境での別の再構築と比較します。パッケージのステータスと環境のバリエーションは、[https://tests.reproducible-builds.org/archlinux/archlinux.html Arch Linux 専用ページ] にリストされています。
[https://reproducible-builds.org/Reproducible Builds] プロジェクトは Arch Linux パッケージを再構築し、異なる環境での別の再構築と比較します。パッケージのステータスと環境のバリエーションは、[https://tests.reproducible-builds.org/archlinux/archlinux.html Arch Linux 専用ページ] にリストされています。


== Helping out ==
== 手助けをする ==


=== Tooling ===
=== ツーリング ===


Help out on fixing bugs and adding features for [https://github.com/archlinux/archlinux-repro repro].
[https://github.com/archlinux/archlinux-repro repro] のバグ修正と機能追加にご協力ください。


=== リビルダーインスタンスの実行 ===
=== Running a Rebuilder instance ===


Arch Linux パッケージをビルドするための [[Rebuilderd|Rebuilderd のセットアップ]] は、リポジトリパッケージを個別に検証するのに役立ちます。
[[Rebuilderd|Setting up rebuilderd]] to build Arch Linux packages helps to independently verify repository packages.


=== 再現によるパッケージの検証と問題点の発見 ===
=== Verifying packages with repro and finding issues ===


これを解決するための優れた方法は、再現できないパッケージを見つけて、それを再現できるようにする方法を考えることです。
A great way to help out is to find an unreproducible package and figuring out how it can be made reproducible.


* Download an Arch Linux package or get one from the [[Arch Linux Archive]]
* Arch Linux パッケージをダウンロードするか、[[Arch Linux Archive]] から入手します。
* Run repro on the downloaded package or a package from your pacman cache. Ideally with {{ic|repro -d}} to get diffoscope output. For example, {{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 skips the {{ic|check()}} step] because running all tests for all packages is too flakey. This creates false unreproducible packages status if {{ic|check()}} has side-effects, such as Python packages.}}
{{Note|https://reproducible.archlinux.org [https://github.com/kpcyrd/rebuilderd/blob/7afb25d52ec12a01c360098c51967099241f90e2/worker/rebuilder-archlinux.sh は、すべてのテストを実行しているため、{{ic|check()}} ステップをスキップします] すべてのパッケージが不安定すぎます。これにより、{{ic|check()}} Python パッケージなどの副作用がある場合、偽の再現不可能なパッケージステータスが作成されます。}}
* Investigate if it is an issue with Arch Linux packaging or upstream, issues can be added on the [[/Status|status page]]. More information can be found on the [https://reproducible-builds.org/docs/ Reproducible Builds website].
* Arch Linux のパッケージングまたはアップストリームに問題があるかどうかを調査し、[[/Status|ステータスページ]] に問題を追加できます。詳細については、[https://reproducible-builds.org/docs/Reproducible Builds Web サイト] をご覧ください。


=== Work on issues in the tests.reproducible-builds.org infrastructure ===
=== testing.reproducible-builds.org インフラストラクチャの問題に取り組む ===


Arch users can help contribute to Reproducible Build issues by looking at the [https://tests.reproducible-builds.org/archlinux/archlinux.html continuous reproducing environment]. There are various issues which can be sorted out:
Arch ユーザーは、[https://tests.reproducible-builds.org/archlinux/archlinux.html 継続的再現環境] を参照して、再現可能なビルドの問題に貢献することができます。解決するには、さまざまな問題があります。


* FTBS (failed to build from source): reproduce the build failure locally and create a bug report if the package cannot be [[DeveloperWiki:Building in a clean chroot|built from a clean chroot]] ({{ic|extra-x86_64-build}} or {{ic|multilib-build}}).
* FTBS (ソースからのビルドに失敗): ビルドの失敗をローカルで再現し、パッケージを [https://wiki.archlinux.org/title/DeveloperWiki:Building_in_a_clean_chroot built from a clean chroot] できない場合はバグレポートを作成します ({{ic|extra-x86_64 -build}} または {{ic|multilib-build}})
* ソースのダウンロードに失敗し、問題を再現し ({{ic|makepkg -o -d}})、Arch バグトラッカーでバグレポートを作成しました。
* Failed to download sources, reproduce the issue ({{ic|makepkg -o -d}}) and create a bug report on the Arch bugtracker.
* Failed to reproduce. Locally you can reproduce packages using {{pkg|reprotest}}. Note that not all variations can be used. For simple time related testing: {{bc|1=$ reprotest --variations '+time' 'sudo extra-x86_64-build' '*.pkg.tar.zst'}}
※再現に失敗しました。ローカルでは、{{pkg|reprotest}} を使用してパッケージを再現できます。すべてのバリエーションを使用できるわけではないことに注意してください。単純な時間関連のテストの場合: {{bc|1=$ reprotest --variations '+time' 'sudo extra-x86_64-build' '*.pkg.tar.zst'}}


There might be various reasons for a package to not be reproducible, but before digging in take a look at the upstream repository or the reproducible status in [https://tests.reproducible-builds.org/debian/reproducible.html Debian]
パッケージが再現できないのにはさまざまな理由が考えられますが、詳しく調べる前に、上流のリポジトリまたは [https://tests.reproducible-builds.org/debian/reproducible.html Debian] で再現可能なステータスを確認してください。


{{Out of date|{{Pkg|glibc}} 2.35-6 ships with C.UTF-8 included.}}
{{Out of date|{{Pkg|glibc}} 2.35-6 ships with C.UTF-8 included.}}


* Failed to run tests, these failures are heavily on the testing environment. Most likely due to to {{ic|1=LANG=C}} being set and Arch not supporting {{ic|1=LANG=C.UTF-8}}.
* Failed to run tests, これらの障害はテスト環境に大きく依存します。おそらく、{{ic|1=LANG=C}} が設定されており、Arch {{ic|1=LANG=C.UTF-8}} をサポートしていないことが原因です。


If you are interested in the code which runs the continuous reproducing environment, the first build code starts here on [https://salsa.debian.org/qa/jenkins.debian.net/blob/master/bin/reproducible_build_archlinux_pkg.sh#L115 salsa]
継続的再生環境を実行するコードに興味がある場合は、最初のビルド コードがここから始まります。[https://salsa.debian.org/qa/jenkins.debian.net/blob/master/bin/reproducible_build_archlinux_pkg.sh#L115 salsa]


{{Note|testing.reproducible-builds.org の継続的再現環境では、公式の Arch パッケージは再現されません。その目的は、パッケージを曖昧にし、できるだけ多くのバグを引き起こして上流に報告できるようにすることだけです。}}
{{Note|The continuous reproducing environment on tests.reproducible-builds.org does NOT reproduce official arch packages. Its purpose is only to fuzz the packages and attempt to trigger as many bugs as possible, so they can be reported upstream.}}


== Known issues ==
== Known issues ==

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

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

ビルドを検証

リポジトリとリビルド

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

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

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

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

手助けをする

ツーリング

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

リビルダーインスタンスの実行

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 パッケージは再現されません。その目的は、パッケージを曖昧にし、できるだけ多くのバグを引き起こして上流に報告できるようにすることだけです。

Known issues

GPG verification

There is a possible rebuild scenario where GPG keys will not verify as the packager was removed from the keyring or revoked as we use the latest keyring and a package in the archive which we need might need be signed by a revoked key we are unable to verify it and the build will fail.

Contact