詳細はこちらをどうぞFreeBSD 6.3 to 7.0
FreeBSD6.3R を7.0Rへメジャーバージョンアップする場合、カーネルオプションをカスタマイズしたものは一手間かかる様なのでデフォルトにもどしておく。
# freebsd-update -r 7.0-RELEASE upgrade # freebsd-update -r 7.0-RELEASE install # reboot
FreeBSD 7.0-RELEASE-p5 (GENERIC) #0: Wed Oct 1 07:51:58 UTC 2008 # /usr/sbin/freebsd-update install
ここで、「portsなどでインストールしたものがあれば、すべて更新してから、もう一度 "/usr/sbin/freebsd-update install すること」と言うことなので、port をアップデートする。
が、そのまま portupdate するとアップデートが完了しないので、以下の対策をしてからportupdateする。
# portsnap fetch && portsnap extract
してports tree を最新にする。
以下のパッケージを手動でインストールし直す。
portupgrade-2.4.6,2 ruby-1.8.6.287,1 ruby18-bdb-0.6.4 (コレをかいた時点では上記バージョンが最新)
だけを手動でインストールする。 つづいて
# mv /var/db/pkg/portupgrade-2.4.6,2 /root/ # mv /var/db/pkg/ruby-1.8.6.287,1 /root/ # mv /var/db/pkg/ruby18-bdb-0.6.4 /root/ # pkgdb -u
としてこれらをスキップさせる様にしてから(先ほど3つ)以外のすべてのパッケージ?を更新
portupgrade -afp
正常終了したら、
# mv /root/portupgrade-2.4.6,2 /root/ruby-1.8.6.287,1 /root/ruby18-bdb-0.6.4 /var/db/pkg/ # pkgdb -u
して、パッケージデータベースを元に戻しておく:-)
パッケージのアップデートが終了したら,旧いライブラリファイルを削除して差し支えない。
# /usr/sbin/freebsd-update install
これでめでたく移行は終了である。
このportupgrade -afp の時に途中で止まる現象については、 http://gihyo.jp/admin/feature/02/freebsd-7/0003 に有るように、途中でデータベースファイル(/var/db/pkg/pkgdb.db)が壊れるためだそうです。
/var/db/pkg/pkgdb.db: unexpected file type or format -- Invalid argument
というエラーで、エラーのログを読むと「ruby18-bdb-0.6.x」パッケージを更新した直後からデータベースが更新できなくなっているようだ。そういえば,標記パッケージはpkgdb.dbを作るために使っているのだから実はあたり前だとも言える。
2008-10-09 (木) 11:45:24