Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
Rebuilderdのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
Rebuilderd
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:パッケージ管理]] [[Category:パッケージ開発]] [[en:Rebuilderd]] [https://github.com/kpcyrd/rebuilderd Rebuilderd] は、バイナリパッケージの独立した検証システムです。同一の環境でビルド手順を繰り返すことにより、プリコンパイルされたパッケージを検証し、パッケージが同一であることを検証できます。現在、検証できるのは ArchLinux パッケージのみです。 {{Note|rebuilderd はまだ実験的なものであり、多くのビルドがまだ再現できていません。リビルドに失敗しても、そのパッケージが悪意のある物とは限りません。}} 再構築機能を実行する場合、または再構築機能の実行を検討している場合は、[ircs://irc.libera.chat/archlinux-reproducible#archlinux-reproducible] IRC チャネルに参加してください。 == インストール == {{Pkg|rebuilderd}} パッケージをインストールして下さい。 == セットアップ == === 単一のマシン === On a single machine you just [[enable]] {{ic|rebuilderd.service}} and the worker service(s): {{ic|rebuilderd-worker@''workername''.service}}. Afterwards you can verify rebuilderd is correctly running with a single worker by running: # rebuildctl status 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 === To run a multi-node rebuilder network we need at least two servers: * '''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''' - 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. 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}}. 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> ## 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 </nowiki>}} [[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}}: {{hc|/etc/rebuilderd-worker.conf|<nowiki> ## 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 </nowiki>}} 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 == 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 [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*"] Afterwards you can [[enable]] {{ic|rebuilderd-sync@archlinux-core.timer}} to automatically sync the profile. == Ansible playbook == 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. == Tips and tricks == === Requeueing failed builds === 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 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 === Package rebuilders === Rebuilders using [[Rebuilderd]]. {| class="wikitable" ! URL!! Contact !! Comment |- | https://reproducible.archlinux.org/ | jelle | |- | https://wolfpit.net/rebuild/ | wahrwolf | |- | https://r-b.engineering.nyu.edu/ | [https://ssl.engineering.nyu.edu/ NYU Secure Systems Lab] | |- |}
このページで使用されているテンプレート:
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:Lowercase title
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:TranslationStatus
(
ソースを閲覧
)
Rebuilderd
に戻る。
検索
検索
Rebuilderdのソースを表示
話題を追加