freebsd-update
freebsd-update
[カテゴリ:FreeBSD]AWSに移行したFreeBSDはアップデート時にsourceからbuildするのではなく freebsd-update に頼ることにしたのでメモ。
いまのバージョン
# freebsd-version -kur
する。上から「インストールされてるkernel」「動いてるkernel」「ユーザランド」のバージョン(らしい)。kernelのバージョンアップを伴わないパッチを当てたあとは一番下だけ数字が増えたりする模様
セキュリティパッチ
パッチレベルをあげるときは
# freebsd-update fetch # freebsd-update install
して再起動すればおしまい。
マイナーバージョンアップ
12.XのXのところのバージョンアップはこうする
# freebsd-update upgrade -r 12.4-RELEASE
このタイミングでmergemaster的なやつが動くのだけど、全然動きが違う。なぜ変更した……。1画面に収まってdiffが表示されてるときは(Y/n)に答えればいいのだけど、ときどき「おまえがviつかって編集するんだよ」みたいなことを言われることがあって、そのときには
<<<<<<<<<< 12.X-RELEASE
とか
========
とか、コメントですらないゴミが差分とともに挿入されているので、手動で消す。sshd_config に挿入されてて構文不正でsshd起動しなかったときは詰んだ。
ここまで終われば
# freebsd-update install
して再起動。ただこの1回目のinstallは install kernel 相当なので、kernelのバージョンアップのみ。「再起動したらもっかい叩けよ」って警告が出るので、再起動後もっかい
# freebsd-update install
を叩く。この2回目のやつが install world 相当。叩いたら再起動して、バージョン確認しておしまい。さっきのmergemaster的なやつ、自信がなければこの2回目の install のあとに /etc の下を確認して直接編集すると間に合う。
メジャーバージョンアップ
基本的にはマイナーバージョンアップと同じ
# freebsd-update upgrade -r 13.2-RELEASE
して、mergemasterの亜種を行って、
# freebsd-update install
して再起動して
# freebsd-update install
する。
で、メジャーバージョンアップのときにはpackagesもバージョンアップしないといけない&そのあともっかい install を叩かないといけない。
Completing this upgrade requires removing old shared object files. Please rebuild all installed 3rd party software (e.g., programs installed from the ports tree) and then run "/usr/sbin/freebsd-update install" again to finish installing updates.
不親切。
# pkg-static install -fy pkg # pkg update -f # pkg upgrade -y # freebsd-update install
でいい。正常に終わったら最後の再起動。おつかれさまでした。
postfix(SMTP認証対応)とかmod_phpとかがpkgでupdateされると壊れるので、pkg lock しておくといいらしい