FreeBSDメジャーバージョン更新

FreeBSDでずっと運用していると避けられないのがシステムの更新。普段はfreebsd-update fetch && freebsd-update installだけでいいけど、メジャーバージョン更新はかなり面倒で時間を要する。
ステップ自体は多くないが1つずつ慎重に進めるのが重要。

#/etcは更新時に下手に書き換えられると苦労するのでバックアップ作成
cp -pR /etc /etc.yyyymmdd

#後でportsを全更新するときに下手に触られると困るのでバックアップ作成
cp -pR /usr/local/etc /usr/local/etc.yyyymmdd


#更新したいメジャーバージョン↓を指定して更新開始
freebsd-update -r 11.0-RELEASE upgrade


#/etc/で更新のあるファイルがviエディタで開くのは修正して保存
#/etc/でファイルの更新内容が表示されるものはメモっておく
#(ときどき酷いゴミを混ぜられるので本当に要注意)

freebsd-update install #1回目
再起動
freebsd-update install #2回目


パッケージの管理アプリを強制更新してやらないと使えない
pkg-static install -f pkg

/etc/make.conf修正(せっかくなのでports側も何か変えるなどで必要なら)

#pkgの情報更新と、portsツリーとデータベースの更新
pkg update && portsnap fetch update && portsdb -uU

#全ports強制更新
portupgrade -af

#もう一度実行 おそらく旧Lib/Objが消される?
freebsd-update install #3回目

/etcと/usr/local/etc/内のファイルを確認する

再起動(おしまい)

freebsd-update -r ○.○-RELEASE upgradeの後に/etc下の修正しなければならないファイルがviエディタで開くことがあるが、< <<<<<< current versionや=======、>>>>>>> ○.○-RELEASEなどのゴミを見落とすとファイルによってはフォーマットエラーで次の再起動後にシステムが正常に起動しない場合もあるので目を皿ののようにして上から下まで1行ずつ全部確認して削除。

(以前は)FreeBSD公式ドキュメントではfreebsd-update installの実行は2回になっていて、場合によってはフェーズが1つ減ると書かれているが、portsのライブラリの依存関係を満たす更新まできちんと行えば実際は減るどころか3回になる筈。