FreeBSD 13 で Jail 環境を freebsd-update する

FreeBSD の各Jail環境(Prisoner)を freebsd-update する方法について。

Symptom

  • FreeBSD のルート環境(Jailer)側から各Jail環境(Prisoner)に対して freebsd-update コマンドを実行したい
  • FreeBSD 13.1 or FreeBSD 12.3 以降を利用している

Resolution

インターネット上を検索すると、よく freebsd-update コマンドに対して UNAME_r 環境変数と -b (basedir) オプションを利用する方法が見つかる。しかし FreeBSD 13.1 or FreeBSD 12.3 以降の freebsd-update から、 -j (jail)--currently-running (release) というオプションが実装された。これを利用して安全にJail環境をアップグレードすることができる。

# wb という名前のPrisonerを 13.0-RELEASE から 13.1-RELEASE へアップデートする場合
(jailer)% sudo freebsd-update -j wb \
              --currently-running 13.0-RELEASE \
              -r 13.1-RELEASE upgrade
src component not installed, skipped
Looking up update.FreeBSD.org mirrors... 2 mirrors found.
Fetching metadata signature for 13.0-RELEASE from update1.freebsd.org... done.
Fetching metadata index... done.
Inspecting system... done.
  : (snip)
To install the downloaded upgrades, run "/usr/sbin/freebsd-update install".

(jailer)% sudo freebsd-update -j wb install
src component not installed, skipped
Installing updates...
Kernel updates have been installed.  Please reboot and run
"/usr/sbin/freebsd-update install" again to finish installing updates.

# Prisoner は Kernel のアップデートで再起動する必要はない
(jailer)% sudo freebsd-update -j wb install
src component not installed, skipped

(jailer)% sudo service jail restart wb

同様に pkg コマンドにも -j (jail) オプションがある。

(jailer)% sudo pkg -j wb update
Updating FreeBSD repository catalogue...
[wb] Fetching meta.conf: 100%    163 B   0.2kB/s    00:01
[wb] Fetching packagesite.pkg: 100%    6 MiB   6.8MB/s    00:01
Processing entries: 100%
FreeBSD repository update completed. 32410 packages processed.
All repositories are up to date.

(jailer)% sudo pkg -j wb upgrade
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
Checking for upgrades (0 candidates): 100%
Processing candidates (0 candidates): 100%
Checking integrity... done (0 conflicting)
Your packages are up to date.