「再現性のあるビルド」の版間の差分
(英語版から転載) |
(→再現によるパッケージの検証と問題点の発見: リンクを修正) |
||
(同じ利用者による、間の5版が非表示) | |||
5行目: | 5行目: | ||
Arch Linux は現在、すべてのパッケージを再現可能にすることに取り組んでいます。これにより、ユーザーや研究者は Arch Linux から配布されたパッケージを検証できるようになります。再現可能なビルドの正確な定義とその利点については、[https://reproducible-builds.org/ プロジェクト Web サイト] をご覧ください。 |
Arch Linux は現在、すべてのパッケージを再現可能にすることに取り組んでいます。これにより、ユーザーや研究者は Arch Linux から配布されたパッケージを検証できるようになります。再現可能なビルドの正確な定義とその利点については、[https://reproducible-builds.org/ プロジェクト Web サイト] をご覧ください。 |
||
− | == |
+ | == ビルドを検証 == |
− | === |
+ | === リポジトリとリビルド === |
+ | 実験的な [[rebuilderd]] インスタンスが、[https://reproducible.archlinux.org ステータスページ] を備えた独自のインフラストラクチャ上にセットアップされました。Rebuilderd はリポジトリパッケージを再構築し、それらがビットごとに同一であるかどうかを確認します。再現できない場合は、ツールにバグがあるか、パッケージが再現できないか、パッケージが適切にビルドされていないかのいずれかです。 |
||
− | An experimental [[rebuilderd]] instance has been setup on our own infrastructure with a [https://reproducible.archlinux.org status page]. Rebuilderd rebuilds our repository packages and checks if they are bit for bit identical. If they are not reproducible there is either a bug in the tooling, the package is not reproducible or the package has not been built cleanly. |
||
+ | 既知の問題のリストは [https://wiki.archlinux.org/title/Reproducible_builds/Status /Status] にあります。 |
||
− | A list of known issues is located on [[/Status]]. |
||
+ | === リビルドとバリエーションのある別のリビルド === |
||
− | === Rebuild vs. another rebuild with variations === |
||
− | + | [https://reproducible-builds.org/Reproducible Builds] プロジェクトは Arch Linux パッケージを再構築し、異なる環境での別の再構築と比較します。パッケージのステータスと環境のバリエーションは、[https://tests.reproducible-builds.org/archlinux/archlinux.html Arch Linux 専用ページ] にリストされています。 |
|
− | == |
+ | == 手助けをする == |
− | === |
+ | === ツーリング === |
− | + | [https://github.com/archlinux/archlinux-repro repro] のバグ修正と機能追加にご協力ください。 |
|
+ | === Rebuilderd インスタンスの実行 === |
||
− | === 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. |
||
− | * |
+ | * Arch Linux パッケージをダウンロードするか、[[Arch Linux Archive]] から入手します。 |
− | * |
+ | * * ダウンロードしたパッケージまたは 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 |
+ | {{Note|https://reproducible.archlinux.org [https://github.com/kpcyrd/rebuilderd/blob/7afb25d52ec12a01c360098c51967099241f90e2/worker/rebuilder-archlinux.sh は、すべてのテストを実行しているため、{{ic|check()}} ステップをスキップします] すべてのパッケージが不安定すぎます。これにより、{{ic|check()}} に Python パッケージなどの副作用がある場合、偽の再現不可能なパッケージステータスが作成されます。}} |
+ | * Arch Linux のパッケージングまたはアップストリームに問題があるかどうかを調査し、[[再現性のあるビルド/ステータス|ステータスページ]] に問題を追加できます。詳細については、[https://reproducible-builds.org/docs/Reproducible Builds Web サイト] をご覧ください。 |
||
− | * 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]. |
||
− | === |
+ | === testing.reproducible-builds.org インフラストラクチャの問題に取り組む === |
− | Arch |
+ | Arch ユーザーは、[https://tests.reproducible-builds.org/archlinux/archlinux.html 継続的再現環境] を参照して、再現可能なビルドの問題に貢献することができます。解決するには、さまざまな問題があります。 |
− | * FTBS ( |
+ | * 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. |
||
− | + | ※再現に失敗しました。ローカルでは、{{pkg|reprotest}} を使用してパッケージを再現できます。すべてのバリエーションを使用できるわけではないことに注意してください。単純な時間関連のテストの場合: {{bc|1=$ reprotest --variations '+time' 'sudo extra-x86_64-build' '*.pkg.tar.zst'}} |
|
− | + | パッケージが再現できないのにはさまざまな理由が考えられますが、詳しく調べる前に、上流のリポジトリまたは [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, |
+ | * Failed to run tests, これらの障害はテスト環境に大きく依存します。おそらく、{{ic|1=LANG=C}} が設定されており、Arch が {{ic|1=LANG=C.UTF-8}} をサポートしていないことが原因です。 |
− | + | 継続的再生環境を実行するコードに興味がある場合は、最初のビルド コードがここから始まります。[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.}} |
||
− | == |
+ | == 既知の問題点 == |
− | === GPG |
+ | === GPG 検証 === |
+ | 最新のキーリングを使用しているため、パッケージャーがキーリングから削除されているか失効しているため、GPG キーが検証されず、必要なアーカイブ内のパッケージが検証できない失効したキーで署名されている可能性があるため、GPG キーが検証されない再構築シナリオが発生する可能性があります。その場合ビルドは失敗します。 |
||
− | 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. |
||
− | == |
+ | == コンタクト == |
− | * [ircs://irc.libera.chat/archlinux-reproducible #archlinux-reproducible] — |
+ | * [ircs://irc.libera.chat/archlinux-reproducible #archlinux-reproducible] — Arch Linux での再現性のあるビルドの進行状況を伝えるメインチャネル |
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
- 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 で再現可能なステータスを確認してください。
- Failed to run tests, これらの障害はテスト環境に大きく依存します。おそらく、
LANG=C
が設定されており、Arch がLANG=C.UTF-8
をサポートしていないことが原因です。
継続的再生環境を実行するコードに興味がある場合は、最初のビルド コードがここから始まります。salsa
既知の問題点
GPG 検証
最新のキーリングを使用しているため、パッケージャーがキーリングから削除されているか失効しているため、GPG キーが検証されず、必要なアーカイブ内のパッケージが検証できない失効したキーで署名されている可能性があるため、GPG キーが検証されない再構築シナリオが発生する可能性があります。その場合ビルドは失敗します。
コンタクト
- #archlinux-reproducible — Arch Linux での再現性のあるビルドの進行状況を伝えるメインチャネル