当サイトはFreeBSD(amd64) 7.3 で運営しているのですが、そろそろFreeBSDの8系にバージョンアップしようかなと思って7.3から8.1にバージョンアップしました。
以前当ブログで書いたのですが、バージョンアップ、大変面倒でした・・・。ただ以下ようにやれば、時間はかかるものの楽にバージョンアップ出来ることはわかったので、そこは収穫かな。
下準備
バージョンアップを行う前に、以下の点を確認および変更します。
- /usr/local/bin/bash等のログインシェルを持っているユーザがいるかどうかの確認。存在した場合はvipwコマンドを利用し/bin/tcshに変更しましょう。
- portsのmisc/compat7xは事前にダウンロードしましょう。
- portsのportupgradeはインストールしておきましょう。
FreeBSD 8系からライブラリの仕様変更が入っていて、↑の対応を行っていないとバージョンアップ作業中にシェルが使えなくなるとか、portsの再構築作業が出来ない等が発生して致命的なダメージを受けます。
なおmisc/compat7xは以下のようにダウンロードしました。
# fetch ftp://ftp.jp.freebsd.org/pub/FreeBSD/ports/amd64/packages-8.1-release/misc/compat7x-amd64-7.2.702000.200906.1.tbz
バージョンアップ作業
以下のようにやればOKです。
まず最初に、バージョンアップのためのデータを一式ダウンロードします。
# portsnap fetch update # freebsd-update upgrade -r 8.1-RELEASE
続いて、Kernelをインストールします。再起動が必要です。なおportsの再構築を行うためサービスは自動再起動しない方がいいでしょう。
# freebsd-update install # shutdown -r now
さて、ここからが本番。再起動後に8.1系のバイナリ一式をインストールしますが、くれぐれも手順は間違えないように・・。portsの再構築はホント時間かかる・・
# freebsd-update install # pkg_add compat7x-amd64-7.2.702000.200906.1.tbz # portupgrade -rf "lang/ruby*" # portupgrade -raf -x "misc/compat*" -x "lang/ruby*" # freebsd-update install # shutdown -r now
1. misc/compat7x -> 2. rubyのrebuild -> 3. misc/compat*, lang/ruby*以外のportsを再構築 -> 7系のライブラリ等を削除(freebsd-update install)という手順を踏まないと再構築に失敗します・・・
最後にcompat7xを削除します。なおゴミが残るのでそこは手動で削除。
# pkg_delete compat7x-amd64-7.2.702000.200906.1 # rm -rf rm -rf /usr/local/lib/compat/pkg
当サイトは上記で対応できました。やれやれ。