はじめに
FreeBSD 15.0-RELEASE で導入された pkgbase 機構が poudriere でも利用できると聞いて試してみました。
話を聞くと pkgbase の運用が固まっていないこともあり、将来変更になるかもしれない(unstable specification)ということで公式ドキュメントの作成が遅れてるようです。
よって基本を押さえつつ、変更があった場合に柔軟に対応できるよう、調査ポイントを含めて解説します。
なお履歴によれば poudriere jail で pkgbase 環境を構築できるようになったのは2023年12月11日リリースのバージョン 3.4.0 から…となります。実用上は 15.0-RELEASE がリリースされた時くらいでしょうか。
ジャイル環境の作り方
結論から言えば下記のコマンドでできます。-j で指定するジャイル名については好きに決めてください。必要に応じてアーキテクチャの指定1や、portsツリーの指定2をしてください。
poudriere jail -c -j freebsd15 -U https://pkg.FreeBSD.org -m pkgbase=base_release_0 -v 15 -a amd64 -p default
ここではそれ以外の -U、-m、-v オプションについて解説します3。
/etc/pkg/FreeBSD.conf
このセットアップを行う鍵は /etc/pkg/FreeBSD.conf というファイルにあります。15.0-RELEASE では下記の設定となっています。
FreeBSD-base: {
url: "pkg+https://pkg.FreeBSD.org/${ABI}/base_release_${VERSION_MINOR}",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkgbase-${VERSION_MAJOR}",
enabled: no
}
上記の url 項目から、それぞれのオプションに対応している項目は以下のような対応になります。
| オプション | 抽出ポイント | 備考 |
|---|---|---|
-U |
https://pkg.FreeBSD.org |
pkg+とドメインの後の / 以降は不要 |
-m pkgbase= |
base_release_${VERSION_MINOR} |
${VERSION_MINOR} は 15.0 では 0
|
-v |
${ABI} |
${ABI} は FreeBSD:15:amd64 の 15
|
これと -a オプションと組み合わせて、それぞれ $U、$m、$v、$m とすると以下のようなURLを構築してアクセスします。
$U/FreeBSD:$v:$a/$m
↓
https://pkg.FreeBSD.org/FreeBSD:15:amd64/base_release_0
なお -U オプションで https://pkg.FreeBSD.org/ と指定しても構わないですが、その場合 https://pkg.FreeBSD.org//FreeBSD:15:amd64/base_release_0 と解釈されます。通常は問題無いと思いますが留意で。
実際にやってみた作業感
全部上書きする(/etc も含む)4…という仕組み的に、従来の freebsd-update を使用する仕組みとは一線を画すスピードで構築されることは間違いありません。これは非常にびっくりしました。
またセットアップ時点で最新バージョンである点も評価が高いです(パッチ差分を当てる処理がない)。
他のバージョンの試し方
下記のURLにアクセスして This server's package sets にリストアップされてる環境が pkgbase 構築可能な環境となっています。
https://pkg.freebsd.org/
自分が見たタイミング(2026/02/07)では13~16(調べてみると13は無い)でamd64とaarch64の8環境となります。実際には個々のページを見て分かるとおり、全て揃っているわけではありません。自分の見立てでは以下の状況です5。参考としてi386環境も含めてリストアップしてみました。
| メジャーバージョン | アーキテクチャ | パス | 対応バージョン | 備考 |
|---|---|---|---|---|
| 13 | amd64 |
N/A | N/A | 作ってないものと思われる |
| 13 | aarch64 |
N/A | N/A | 作ってないものと思われる |
| 13 | i386 |
N/A | N/A | 作ってないものと思われる |
| 14 | amd64 |
base_latest |
14-STABLE |
最新の 14-STABLE 環境(日時更新?) |
base_release_0 |
14.0p11 |
最新の 14.0-RELEASE 環境(アナウンスある度更新?) |
||
base_release_1 |
14.1p8 |
最新の 14.1-RELEASE 環境(アナウンスある度更新?) |
||
base_release_2 |
14.2p7 |
最新の 14.2-RELEASE 環境(アナウンスある度更新?) |
||
base_release_3 |
14.3p8 |
最新の 14.3-RELEASE 環境(アナウンスある度更新?) |
||
| 14 | aarch64 |
base_latest |
14-STABLE |
最新の 14-STABLE 環境(日時更新?) |
base_release_0 |
14.0p11 |
最新の 14.0-RELEASE 環境(アナウンスある度更新?) |
||
base_release_1 |
14.1p8 |
最新の 14.1-RELEASE 環境(アナウンスある度更新?) |
||
base_release_2 |
14.2p7 |
最新の 14.2-RELEASE 環境(アナウンスある度更新?) |
||
base_release_3 |
14.3p8 |
最新の 14.3-RELEASE 環境(アナウンスある度更新?) |
||
| 14 | i386 |
base_latest |
14-STABLE |
最新の 14-STABLE 環境(日時更新?) |
base_release_0 |
14.0p11 |
最新の 14.0-RELEASE 環境(アナウンスある度更新?) |
||
base_release_1 |
14.1p8 |
最新の 14.1-RELEASE 環境(アナウンスある度更新?) |
||
base_release_2 |
14.2p7 |
最新の 14.2-RELEASE 環境(アナウンスある度更新?) |
||
base_release_3 |
14.3p6 |
14.3-RELEASE 環境(最新ではない?) |
||
| 15 | amd64 |
base_latest |
15-STABLE |
最新の 15-STABLE 環境(日時更新?) |
base_release_0 |
15.0p2 |
最新の 15.0-RELEASE 環境(アナウンスある度更新?) |
||
| 15 | aarch64 |
base_latest |
15-STABLE |
最新の 15-STABLE 環境(日時更新?) |
base_release_0 |
15.0p2 |
最新の 15.0-RELEASE 環境(アナウンスある度更新?) |
||
| 16 | amd64 |
base_latest |
16-CURRENT |
最新の 16-CURRNET 環境(日時更新?) |
例えば 15-STABLE を試したいなら下記の様な指定となります。
poudriere jail -c -j freebsd15st -U https://pkg.FreeBSD.org -m pkgbase=base_latest -v 15 -a amd64 -p default
また 16-CURRENT の場合は下記の通りです。
poudriere jail -c -j freebsd16cur -U https://pkg.FreeBSD.org -m pkgbase=base_latest -v 16 -a amd64 -p default
メジャー・マイナーアップグレード
現在 15.0-RELEASE 相当となっているので、これを 15.1-RELEASE 相当とする手順は今のところ不明です。
poudriere jail -u -j freebsd15 -m pkgbase=base_release_1 とするのだと思いましたが、更新されません。
また将来リリースされる 16.0-RELEASE だと poudriere jail -u -j freebsd15 -m pkgbase=base_release_0 -t 16 を実行するはずですが、これも更新されません。
今のところメジャーアップグレード、マイナーアップグレードともに、作り直しをオススメします。
参考文献
FreeBSDワークショップへのお誘い
この手の時事ネタをFreeBSDワークショップにて話し合うことがあります。
お時間ありましたら奮ってご参加ください。