FreeBSD のメジャーアップデートで portupgrade したら「uname-r and osversion do not agree on major version」エラーになった話
By takagiwa on Tuesday, July 2 2024, 22:42 - FreeBSD - Permalink
FreeBSD 13.2-RELEASE から 14.1-RELEASE にアップグレードしたら、jail でタイトルのようなエラーになった。
起きていることは FreeBSDmakeエラー:UNAME_r and OSVERSION do not agree on major version number. 。
ただ、もう freebsd-update install は全て実行したあと。
元々アップグレードは 16.2.3. メジャーおよびマイナーバージョンのアップグレード の手順をやって、16.2.3.2. メジャーバージョンアップグレード後の package のアップグレード の手順をやってホストは完了。
その後 jail を全部起動して 17.7.1. Upgrading a Classic Jail or a Thin Jail using OpenZFS Snapshots を実行。
pkg でのアップデートは全て問題無く終わったように見えた。
けど一部のパッケージは ports で入れていたので、それらの make をしたらタイトルのようなエラーがでてきた。
>freebsd-version -ur 14.1-RELEASE 13.2-RELEASE-p12
こんなふうにカーネルとユーザーランドでバージョンが違う。多分 jail 側のアップグレード手順が悪かったんだと思う。
qjail を使っているので、ホストで
# qjail update -b
をやったら、今度は qjail console ができなくなった(コンソールが開けずホストのシェルに戻ってきてしまう)。
# jexec jail_name pkg ld-elf.so.1: Shared object "libssl.so.111" not found, required by "pkg"
となって依存関係がおかしくなったらしい。
# jexec jail_name /bin/csh > pkg-static install -f pkg Installed packages to be REINSTALLED: pkg-1.21.3 (ABI changed: 'freebsd:13:x86:64' -> 'freebsd:14:x86:64')
となって、
>freebsd-version -ur 14.1-RELEASE 14.1-RELEASE-p2
とはなった。それでも qjail console がまだ動かない。また他の jail は ABI の変化を見つけてくれていないので qjail update -b をするしかないのか。
おまけで MySQL も動かなくなっていた。
>/usr/local/etc/rc.d/mysql-server start Starting mysql. su: pam_start: System error /usr/local/etc/rc.d/mysql-server: WARNING: failed to start mysql
PAM broken in jails after update to 14.0-RELEASE に従って /etc/pam.d/system を編集。とりあえず pam_opie が含まれる2行をコメントアウト。
auth sufficient pam_opie.so no_warn no_fake_prompts auth requisite pam_opieaccess.so no_warn allow_local
これで復旧したように見える。