「Rebuilderd」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(英語版から転載)
 
(序文を更新)
 
(2人の利用者による、間の9版が非表示)
2行目: 2行目:
 
[[Category:パッケージ開発]]
 
[[Category:パッケージ開発]]
 
[[en:Rebuilderd]]
 
[[en:Rebuilderd]]
  +
[https://github.com/kpcyrd/rebuilderd Rebuilderd] は、バイナリパッケージの独立した検証システムです。同一の環境でビルド手順を繰り返すことにより、プリコンパイルされたパッケージを検証し、パッケージが同一であることを検証できます。現在、検証できるのは ArchLinux パッケージのみです。
[https://github.com/kpcyrd/rebuilderd Rebuilderd] is an independent verification system for binary packages. It allows verification of pre-compiled packages by repeating the build step in an identical environment and then verifies that the package is identical. Right now only Arch Linux packages can be verified.
 
   
  +
{{Note|rebuilderd はまだ実験的なものであり、多くのビルドがまだ再現できていません。リビルドに失敗しても、そのパッケージが悪意のある物とは限りません。}}
{{Note|rebuilderd is still experimental and a large number of builds are not reproducible yet. A failed rebuild does not necessarily mean that the package is malicious.}}
 
   
If you run a rebuilder or consider running a rebuilder feel free to join the [ircs://irc.libera.chat/archlinux-reproducible #archlinux-reproducible] IRC channel.
+
再構築機能を実行する場合、または再構築機能の実行を検討している場合は、[ircs://irc.libera.chat/archlinux-reproducible #archlinux-reproducible] IRC チャネルに参加してください。
   
== Installation ==
+
== インストール ==
   
Install the {{Pkg|rebuilderd}} package.
+
{{Pkg|rebuilderd}} パッケージをインストールして下さい。
   
== Setup ==
+
== セットアップ ==
   
=== Single machine ===
+
=== 単一のマシン ===
   
On a single machine you just [[enable]] {{ic|rebuilderd.service}} and the worker service(s): {{ic|rebuilderd-worker@''workername''.service}}.
+
単一のマシンでは、ただ {{ic|rebuilderd.service}} とワーカーサービスを [[有効化]] するだけです。{{ic|rebuilderd-worker@''workername''.service}} を有効にします。
   
  +
その後、rebuilderd が単一のワーカーで正しく動作していることを確認するには、次のように実行します。
Afterwards you can verify rebuilderd is correctly running with a single worker by running:
 
   
 
# rebuildctl status
 
# rebuildctl status
   
  +
認証クッキーが見つからないというエラーが出た場合は、{{ic|rebuilderd}} [[ユーザーとグループ#グループ一覧|ユーザグループ]] に自分自身を追加する必要があるかもしれません。
If you get an error that no authentication cookie could be found, you might need to add yourself to the {{ic|rebuilderd}} [[user group]].
 
   
  +
次のセクションに進んで、ワーカーがリビルドできるようにパッケージを同期してください。
Continue with the next section to sync packages that our worker can rebuild.
 
   
  +
=== マルチノード再構築機能のセットアップ ===
=== Multi-node rebuilder setup ===
 
   
  +
マルチノード再構築ネットワークを実行するには、少なくとも2台のサーバーが必要です:
To run a multi-node rebuilder network we need at least two servers:
 
   
  +
* '''rebuilderd daemon''' - これは非常に少ないリソースしか必要とせず (CX11 インスタンスで十分です)、すべてのパッケージの追跡、ワーカーの調整、クライアントへの結果配信を行います。'''このデーモンは https でセットアップする必要があります'''。
* '''rebuilderd daemon''' - This one only needs very few resources (a CX11 instance is fine), it keeps track of all packages, coordinates the workers and serves results to clients. '''This daemon should be setup with https'''.
 
  +
* '''rebuilderd worker''' - このサーバーは実際のビルドを実行します。このサーバには少なくとも 16GB の RAM が必要です。すべてのパッケージをビルドするのであれば、32GB 近くが必要です。
* '''rebuilderd worker''' - This server runs the actual builds. This server should have at least 16GB ram, if you want to build all packages this should be closer to 32GB.
 
   
  +
ワーカーは、シークレットサインアップキー({{ic|worker.signup_secret}})を使用してデーモンに対して自身を認証する必要があります。このキーは、{{ic|pwgen-1s32}} で生成できます。
The worker needs to authenticate itself to the daemon with a secret signup key ({{ic|worker.signup_secret}}). This key can be generated with {{ic|pwgen -1s 32}}.
 
   
  +
また、rebuildctl をリモートで使用するための2番目のシークレットを生成することもできます({{ic|auth.cookie}})これはオプションです。{{ic|rebuilderd}} グループに自分を追加した後にサーバーで rebuildctl を実行することもできます。
You can also generate a second secret to use rebuildctl remotely ({{ic|auth.cookie}}). This is optional, you can also run rebuildctl on the server after adding yourself to the {{ic|rebuilderd}} group.
 
   
 
{{hc|/etc/rebuilderd.conf|<nowiki>
 
{{hc|/etc/rebuilderd.conf|<nowiki>
80行目: 80行目:
 
</nowiki>}}
 
</nowiki>}}
   
  +
{{ic|rebuilderd.service}} を [[起動]] して [[有効化]] します。
[[Start]] and [[enable]] {{ic|rebuilderd.service}}.
 
   
Next we head over to our worker machines to set them up. Install {{Pkg|rebuilderd}} as well and edit {{ic|/etc/rebuilderd-worker.conf}}:
+
次に、ワーカーマシンに移動してセットアップします。 {{Pkg|rebuilderd}} をインストールし、{{ic|/etc/rebuilderd-worker.conf}} を編集します。
   
 
{{hc|/etc/rebuilderd-worker.conf|<nowiki>
 
{{hc|/etc/rebuilderd-worker.conf|<nowiki>
111行目: 111行目:
 
</nowiki>}}
 
</nowiki>}}
   
  +
同時再構築のためにワーカーユニットを複数回起動できます (マシンに十分なリソースがある場合)、{{ic|rebuilderd-worker@0.service}} を [[起動/有効化]] して1人のワーカーから開始します({{ic|0}} と呼びます。)
We can start the worker unit multiple times for concurrent rebuilds (if the machine has enough resources). We are going to start with just one worker (and call it {{ic|0}}) by [[starting/enabling]] {{ic|rebuilderd-worker@0.service}}
 
   
  +
== 再構築するためのパッケージの同期 ==
== Syncing packages to rebuild ==
 
   
  +
パッケージの同期元を明示的に構成するまで、再構築セットアップはデフォルトでは何も実行しません。同期プロファイルは {{ic|/etc/rebuilderd-sync.conf}} で構成されます。プロファイル名は一意である必要があります。 {{ic|maintainer}} オプションを使用して特定のメンテナのパッケージのみをビルドするように構成します。デフォルトでは、すべてのメンテナのパッケージをインポートしています。
The rebuilder setup will not do anything by default until you explicitly configure where to sync packages from. The sync profiles are configured in {{ic|/etc/rebuilderd-sync.conf}}. The profile names are supposed to be unique. You configure it to only build packages of a specific maintainer with the {{ic|maintainer}} option. By default it is importing packages of all maintainers.
 
   
 
## rebuild all of core
 
## rebuild all of core
136行目: 136行目:
 
#excludes = ["tensorflow*"]
 
#excludes = ["tensorflow*"]
   
Afterwards you can [[enable]] {{ic|rebuilderd-sync@archlinux-core.timer}} to automatically sync the profile.
+
その後、{{ic|rebuilderd-sync@archlinux-core.timer}} [[有効化]] して、プロファイルを自動的に同期できます。
   
== Ansible playbook ==
+
== Ansible プレイブック ==
   
An [[Ansible]] playbook with a rebuilderd role can be found in Arch Linux's [https://gitlab.archlinux.org/archlinux/infrastructure/-/blob/master/playbooks/reproducible.archlinux.org.yml infastructure repository]. Use this as inspiration as the Ansible repository is heavily dependent on how the Arch Linux infrastructure is set up.
+
再構築された役割を持つ [[Ansible]] プレイブックは、ArchLinux [https://gitlab.archlinux.org/archlinux/infrastructure/-/blob/master/playbooks/reproducible.archlinux.org.yml infastructure リポジトリ] にあります。Ansible リポジトリは ArchLinux インフラストラクチャの設定方法に大きく依存しているため、これをインスピレーションとして使用してください。
   
  +
== ヒントとテクニック ==
== Tips and tricks ==
 
   
  +
=== 失敗したビルドの再キューイング ===
=== Requeueing failed builds ===
 
   
  +
再構築された 0.5.0 以降、失敗したビルドは遅延の増加とともに自動的に再試行されます。次の方法でパッケージをすぐに再試行できます。
Starting with rebuilderd 0.5.0 failed builds are retried automatically with increasing delays. You can retry packages immediately with:
 
   
 
# rebuildctl pkgs requeue --suite core --status BAD
 
# rebuildctl pkgs requeue --suite core --status BAD
   
  +
古いバージョンでは、このコマンドを使用して、失敗したすべてのビルドをキューに再度追加する必要がありました。
In older versions you had to use this command to add all failed builds to the queue again:
 
   
 
# rebuildctl pkgs ls --distro archlinux --suite core --status BAD --json | jq -r '.[].name' | xargs -L1 rebuildctl queue push archlinux core
 
# rebuildctl pkgs ls --distro archlinux --suite core --status BAD --json | jq -r '.[].name' | xargs -L1 rebuildctl queue push archlinux core
   
=== Package rebuilders ===
+
=== パッケージ再構築者 ===
   
Rebuilders using [[Rebuilderd]].
+
[[Rebuilderd]] を使用するリビルダー
   
 
{| class="wikitable"
 
{| class="wikitable"
! URL!! Contact !! Comment
+
! URL!! コンタクト !! コメント
 
|-
 
|-
 
| https://reproducible.archlinux.org/
 
| https://reproducible.archlinux.org/
172行目: 172行目:
 
| [https://ssl.engineering.nyu.edu/ NYU Secure Systems Lab]
 
| [https://ssl.engineering.nyu.edu/ NYU Secure Systems Lab]
 
|
 
|
  +
|-
  +
| https://rebuilder.pitastrudl.me/
  +
| pitastrudl
  +
| IRC Libera または pitastrudl@chaos.social
 
|-
 
|-
 
|}
 
|}
  +
  +
{{TranslationStatus|Rebuilderd|2022-10-27|733027}}

2023年10月27日 (金) 01:20時点における最新版

Rebuilderd は、バイナリパッケージの独立した検証システムです。同一の環境でビルド手順を繰り返すことにより、プリコンパイルされたパッケージを検証し、パッケージが同一であることを検証できます。現在、検証できるのは ArchLinux パッケージのみです。

ノート: rebuilderd はまだ実験的なものであり、多くのビルドがまだ再現できていません。リビルドに失敗しても、そのパッケージが悪意のある物とは限りません。

再構築機能を実行する場合、または再構築機能の実行を検討している場合は、#archlinux-reproducible IRC チャネルに参加してください。

インストール

rebuilderd パッケージをインストールして下さい。

セットアップ

単一のマシン

単一のマシンでは、ただ rebuilderd.service とワーカーサービスを 有効化 するだけです。rebuilderd-worker@workername.service を有効にします。

その後、rebuilderd が単一のワーカーで正しく動作していることを確認するには、次のように実行します。

# rebuildctl status

認証クッキーが見つからないというエラーが出た場合は、rebuilderd ユーザグループ に自分自身を追加する必要があるかもしれません。

次のセクションに進んで、ワーカーがリビルドできるようにパッケージを同期してください。

マルチノード再構築機能のセットアップ

マルチノード再構築ネットワークを実行するには、少なくとも2台のサーバーが必要です:

  • rebuilderd daemon - これは非常に少ないリソースしか必要とせず (CX11 インスタンスで十分です)、すべてのパッケージの追跡、ワーカーの調整、クライアントへの結果配信を行います。このデーモンは https でセットアップする必要があります
  • rebuilderd worker - このサーバーは実際のビルドを実行します。このサーバには少なくとも 16GB の RAM が必要です。すべてのパッケージをビルドするのであれば、32GB 近くが必要です。

ワーカーは、シークレットサインアップキー(worker.signup_secret)を使用してデーモンに対して自身を認証する必要があります。このキーは、pwgen-1s32 で生成できます。

また、rebuildctl をリモートで使用するための2番目のシークレットを生成することもできます(auth.cookie)これはオプションです。rebuilderd グループに自分を追加した後にサーバーで rebuildctl を実行することもできます。

/etc/rebuilderd.conf
## Configuration for http daemon
[http]
## The address to bind to. This is 127.0.0.1:8484 by default.
bind_addr = "0.0.0.0:8484"
## If you use a reverse proxy, use this header instead of the actual connecting ip.
## Make sure the reverse proxy has filters in place to prevent spoofing issues.
#real_ip_header = "X-Real-IP"
## Set a default endpoint for rebuildctl. This is especially useful for the sync timer.
#endpoint = "http://127.0.0.1:8484"

## A random cookie for administration is generated at startup and written to /var/lib/rebuilderd/auth-cookie
## You can set this to a fixed value here. Use `pwgen -1s 32` to generate one.
## rebuildctl is searching for this cookie in ~/.config/rebuilderd.conf, /etc/rebuilderd.conf and
## /var/lib/rebuilderd/auth-cookie in that order.
#[auth]
#cookie = "INSECURE"

## The auth cookie above is only used for the default endpoint.
## You can use different endpoints with `rebuildctl -H https://rebuilder.example.com status`,
## In that case you need to configure a section below if you want to attach a cookie.
#[endpoints."https://rebuilder.example.com"]
#cookie = "INSECURE"

## IMPORTANT: in production, make sure either `authorized_workers` or `signup_secret` is configured.
[worker]
## If we have a fixed set of workers we can allow-list the keys here.
#authorized_workers = ["key1", "key2"]
## If we want to spawn new workers dynamically we can configure a sign up secret below.
## Use `pwgen -1s 32` to generate one.
signup_secret = "INSECURE"

#[schedule]
## Configure the delay to automatically retry failed rebuilds in hours. The
## default is 24h, this base is multiplied with the number of rebuilds, so the
## first retry would happen after 24h, the second retry would happen 48h after the
## first retry and the third retry would happen 72h after the second retry. There
## is no upper limit of retries, if you can't afford frequent retries it's
## recommended to set this to a high value like 168 (1 week) or higher.
## Successful rebuilds are not retried.
#retry_delay_base = 24

rebuilderd.service起動 して 有効化 します。

次に、ワーカーマシンに移動してセットアップします。 rebuilderd をインストールし、/etc/rebuilderd-worker.conf を編集します。

/etc/rebuilderd-worker.conf
## The rebuilderd to connect to
endpoint = "https://rebuilder.example.com" # or http://rebuilder.example.com:8484
## The server would either allowlist our key or require a signup secret
signup_secret = "INSECURE-CHANGE-ME"

[build]
#timeout = 86400 # 24 hours
## Set a maximum build log limit in bytes (default: none).
## When reaching this limit the log is truncated but the rebuilder backend is *not* terminated.
max_bytes = 10485760 # 10 MiB
## By default build output is forwarded to stdout/stderr.
## This can be disabled by settings this to true.
#silent = true

[diffoscope]
## Generate and attach diffs with diffoscope when rebuilding
enabled = true
## Pass additional arguments to diffoscope. Use wisely, some options might not work well.
#args = ["--max-container-depth", "2", "--fuzzy-threshold", "0"]
## Set a timeout in seconds after which diffoscope is terminated (default: 3600)
#timeout = 600 # 10 minutes
## Set a maximum diffoscope output limit in bytes (default: none).
## When reaching this limit, diffoscope is terminated and the output is truncated.
max_bytes = 41943040 # 40 MiB

同時再構築のためにワーカーユニットを複数回起動できます (マシンに十分なリソースがある場合)、rebuilderd-worker@0.service起動/有効化 して1人のワーカーから開始します(0 と呼びます。)

再構築するためのパッケージの同期

パッケージの同期元を明示的に構成するまで、再構築セットアップはデフォルトでは何も実行しません。同期プロファイルは /etc/rebuilderd-sync.conf で構成されます。プロファイル名は一意である必要があります。 maintainer オプションを使用して特定のメンテナのパッケージのみをビルドするように構成します。デフォルトでは、すべてのメンテナのパッケージをインポートしています。

## rebuild all of core
[profile."archlinux-core"]
distro = "archlinux"
suite = "core"
architecture = "x86_64"
source = "https://ftp.halifax.rwth-aachen.de/archlinux/$repo/os/$arch"

## rebuild community packages of specific maintainers, or whitelist packages by name.
## If no filter is set, all packages are imported, if both filters are set the package only
## has to match one of them to be included.
#[profile."archlinux-community"]
#distro = "archlinux"
#suite = "community"
#architecture = "x86_64"
#source = "https://ftp.halifax.rwth-aachen.de/archlinux/$repo/os/$arch"
#maintainers = ["somebody"]
#pkgs = ["some-pkg", "python-*"]
#excludes = ["tensorflow*"]

その後、rebuilderd-sync@archlinux-core.timer有効化 して、プロファイルを自動的に同期できます。

Ansible プレイブック

再構築された役割を持つ Ansible プレイブックは、ArchLinux の infastructure リポジトリ にあります。Ansible リポジトリは ArchLinux インフラストラクチャの設定方法に大きく依存しているため、これをインスピレーションとして使用してください。

ヒントとテクニック

失敗したビルドの再キューイング

再構築された 0.5.0 以降、失敗したビルドは遅延の増加とともに自動的に再試行されます。次の方法でパッケージをすぐに再試行できます。

# rebuildctl pkgs requeue --suite core --status BAD

古いバージョンでは、このコマンドを使用して、失敗したすべてのビルドをキューに再度追加する必要がありました。

# rebuildctl pkgs ls --distro archlinux --suite core --status BAD --json | jq -r '.[].name' | xargs -L1 rebuildctl queue push archlinux core

パッケージ再構築者

Rebuilderd を使用するリビルダー

URL コンタクト コメント
https://reproducible.archlinux.org/ jelle
https://wolfpit.net/rebuild/ wahrwolf
https://r-b.engineering.nyu.edu/ NYU Secure Systems Lab
https://rebuilder.pitastrudl.me/ pitastrudl IRC Libera または pitastrudl@chaos.social
翻訳ステータス: このページは en:Rebuilderd の翻訳バージョンです。最後の翻訳日は 2022-10-27 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。