0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

poudriere で pkgbase な jail 環境を作ってみる

0
Posted at

はじめに

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ワークショップにて話し合うことがあります。
お時間ありましたら奮ってご参加ください。

  1. 他に指定できるとしたら aarch64armv7 くらい。i386 は 15.0-RELEASE から対象外です

  2. 事前に poudriere ports -c しておいたもの

  3. poudriere jail -c ではなく poudriere jail create として欲しい所

  4. パッケージメタ情報(ハッシュ値)との比較で、差違が発生しているファイルは .pkgsave という名前で保存されます

  5. amd64aarch64i386 およびリリースと最新に絞って調べてます。base_weekly というのもありますが運用状況不明のため除外

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?