2012年01月19日

FreeBSD 9.0-RELEASEにアップグレード

FreeBSD 9.0-RELEASEが公開されたので、FreeBSD 8.2-RELEASE-p6からアップグレードを行いました。

FreeBSD 9.0-RELEASEにアップグレード

アップグレードの手順はFreeBSD 9.0-RELEASE Release NotesFreeBSD 9.0-RELEASE Installation Instructionsを参考に行いました。

まずは、現在のシステムの確認。

$ uname -a
FreeBSD psyche.gaso.jp 8.2-RELEASE-p3 FreeBSD 8.2-RELEASE-p3 #0: Tue Sep 27 18:45:57 UTC 2011     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64

アップデートは、ソースからコンパイルではなくfreebsd-updateを使用しました。
まずは、8.2を最新状態にします。

# freebsd-update fetch
Looking up update.FreeBSD.org mirrors... 4 mirrors found.
Fetching metadata signature for 8.2-RELEASE from update5.FreeBSD.org... done.
Fetching metadata index... done.
Inspecting system... done.
Preparing to download files... done.

# freebsd-update install
No updates are available to install.
Run '/usr/sbin/freebsd-update fetch' first.

次に実際に9.0にアップグレードをします。途中、ttyの設定やbindの設定などを対話形式で聞かれましたが、特に詰まることなくサクサクとyesと答えて作業を進めました。

# freebsd-update upgrade -r 9.0-RELEASE
# freebsd-update install
# shutdown -r now

再起動後に再度実行。

# freebsd-update install

portsの更新

phpを実行しようとしたところ、 libz.so.5が見つからないとエラーが表示されました。どうやらlibz.so.6にライブラリが変わった模様。そうなるとこいつを使用しているportsを再コンパイルする必要があります。無難にln -s libz.so.6 libz.so.5としても良かったのですが、精神的に気持ち悪いのでportupgrade -aRfで全てを再コンパイルすることにしました。しかし、portversionでインストール済みのportsを見ると、結構いらないものが多くあったので良い機会なので一旦全て消して再度入れることにしました。全てを消す魔法を唱えます。

pkg_delete -af

ここで問題が発生。rootのシェルをbashにしていました。bashはもちろんportsからインストールしています。無事、rootでログインできなくなりました。

久しぶりにシングルユーザーモードで起動を行いました。まずmount -wf /で読み書きできるように再マウントし、vipwでShellを/usr/local/bin/bashから/usr/tcshに変更しました。やれやれです。

なんだかんだで、portsを再インストールして、無事にシステムは動作。毎回、アップグレードで何かしらツマラナイ間違いをしてしまうな。

$ uname -a
FreeBSD psyche.gaso.jp 9.0-RELEASE FreeBSD 9.0-RELEASE #0: Tue Jan  3 07:46:30 UTC 2012     root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64

参考文献

zlibのバージョンアップとそれに伴う問題の解決方法