FreeBSD 4.x系列のサポートが終了し、portsのサポート対象から外れてしまったので、事務所の4.11-STABLEサーバを移行する。本当は一気に6.2-STABLEに上げたいが、4.11ではブートストラップできないので、まずは5.5-STABLEに上げる。手順はUPDATINGにある通りでいいはずなのだが、なぜかsys/bootのビルドがこける。仕方ないので別の6.xマシンでビルドして持ってくる。ここで気づいたが、6.xマシンがあるのだからそこでビルドして持ってくればよかった。ぜんぜん頭が回らないな。いや、できるだけ自分自身でやらせるのだ。
 途中で手順を誤り、ブートしなくなって焦ったりしつつ、なんとかアップグレード完了。BINDはもともと9系列を使っていたので、/var/namedのchroot環境内にレイアウトしなおして移行完了。ひとつはまったのはsudoで、なぜかchunk is already freeとのたまって死ぬ。PAMの設定を消したらとりあえず解決した。
 カーネルの「options COMPAT_FREEBSD4」とCOMPAT4Xライブラリのコンボで、バイナリ互換性はまったく問題なし。ただ、古いPerlの残骸と、リンク切れのライブラリは掃除する必要があった。本格的な掃除やパッケージ等のリビルドは後回し。
 よし、5.5-STABLEが動作したので、いよいよ6.2-STABLEのビルドに進む。ところが、ccのビルド中に生成されるsafe-ctype.hが文法エラーを起こしてしまう。見たところ、「echo "...(x) == '\n'..." >> safe-ctype.h」のような二重引用符内のエスケープシーケンスが展開されてしまっている。printf(1)じゃあるまいし、なんで?不審を抱きつつ、「\\n」等に直す。ビルドを続行すると、今度は別のエラーで止まり、そこで原因が分かった。
 エラーメッセージは「ksh: setvar: not found」。そうだ…思い出した。速度を稼ぐため、MAKE_SHELL=/bin/kshでmake(1)を作っていたんだった。いつのまにかFreeBSDのビルドに(pd)kshを使うのはサポート外になっていたんだな。「ln -sf sh /bin/ksh」して続行したら、今度はうまく行った。
↑今ここ。
I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article.
Thank you for your sharing. I am worried that I lack creative ideas. It is your article that makes me full of hope. Thank you. But, I have a question, can you help me?