1. メンテナンス・トラブルシュート - freebsd-update - 8.4 RELEASE から 9.3 RELEASE へ - 計画

 
 今までバージョンアップは悪く言えば、いきあたりばったり的にやってきてなんとなくうまくいってきたのですが、今回はきちんと計画を立ててみようと思います。
1.1 サーバアプリケーションの停止
1.2 システムバックアップ
1.3 何にアップデートするか?
1.4 設定ファイルの確認

1.1 サーバアプリケーションの停止

 まず、バックアップを取りたいのですが、バックアップをとっている最中に更新がはいるといけませんので、まずは、sshd をのぞくサーバアプリケーションを停止します。  データベース関係は、物理的なバックアップもとりますが、データベースサーバを停止する前にデータベースのバックアップ機能を使用してバックアップをとります。  データベースのバックアップは「postgreSQL - バックアップ」や「MySQL - バックアップ」の要領でやるわけです。

1.2 システムバックアップ

 その後、データベースサーバも停止して、システム全体のバックアップをとります。  バックアップは「システムバックアップ」の要領で。

1.3 何にアップデートするか?

 何にアップデートするかは当然、あらかじめ決めておかなければなりません。あちこちのサイトを読むと、メジャーバージョンを2つ飛び越すのは避けた方がいいようです。なので 6.x であれば 7.x へ 7.x であれば 8.x へ 8.x であれば 9.x へ 9.x であれば 10.x へ  アップデートするのが正しいやり方のようです。  6.3-RELEASE 以前のバージョンには、freebsd-update そのものがないようなので、一気に最新へ近いものへクリーンインストールするのが最も早いやり方のような気がします。

1.4 設定ファイルの確認

 freebsd-upate の設定ファイルは /etc/freebsd-update.conf とのこと。  ハンドブックに書いてある内容と自分が意図していることがマッチしているかを確認していきます。

# Components of the base system which should be kept updated.
Components src world kernel
   ↑  は変えることもできるが、デフォルトのままにしておかないと将来的にシステムとアプリケーションの間にアンマッチが発生して、取り返しのつかないことになりかねないとのこと。  そんな恐ろしいことにはなりたくないので、そのままにしておく・・・と。

# Paths which start with anything matching an entry in an IgnorePaths
# statement will be ignored.
IgnorePaths
   ↑  で IgnorePaths の先にアップデートしたくないディレクトリをスペースで区切って列挙することにより、ローカルの変更点を freebsd-update が上書きすることを防ぐ目的にも利用できるらしい。  バックアップもとったし、今んとこ大丈夫かしら・・・。

# Paths which start with anything matching an entry in an UpdateIfUnmodified
# statement will only be updated if the contents of the file have not been
# modified by the user (unless changes are merged; see below).
UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile
   ↑  のオプションは、指定したディレクトリにある設定ファイルを、 ローカルで変更されていない場合のみアップデートするとのこと。 ユーザがこれらのファイルを変更していると、 これらのファイルの自動アップデートは妨げられる。 他に、KeepModifiedMetadata という別のオプションが存在して、freebsd-update がマージ中に変更点を保存するようにするらしい。  /home や /usr/local/etc あたりは、freebsd-update では変更されそうにないので、ここの記述もこのままでよし・・・かな。

# When upgrading to a new FreeBSD release, files which match MergeChanges
# will have any local changes merged into the version from the new release.
MergeChanges /etc/ /var/named/etc/ /boot/device.hints
   ↑  はfreebsd-update がマージすべきファイルが存在するディレクトリの一覧とのこと。説明を読む限りは、アップデート中に、マージを承認するか、エディタを起動するか、 freebsd-update を中断するかどうかを選ぶ選択肢が出てくるらしい。「もし、心配な点があれば、 /etc をバックアップしてからマージを承認してください。」と書いてある・・・。これもバックアップがあるから大丈夫かしら・・・。

# Directory in which to store downloaded updates and temporary
# files used by FreeBSD Update.
# WorkDir /var/db/freebsd-update
   ↑  はすべてのパッチや一次ファイルを置くディレクトリを指定しているとのこと。 バージョンをアップグレードするのであれば、 この場所には少なくともギガバイトの空き容量が必要ですとのこと。  ディレクトリを作らなければならんのかな・・・と思ったら、/var/db/freebsd-update は存在するようなので、下のコメントを外すだけでよいかな。  ディスクの空き容量 /var 配下を確認して充分な空き容量がありそうなので、とりあえず安心。

# When upgrading between releases, should the list of Components be
# read strictly (StrictComponents yes) or merely as a list of components
# which *might* be installed of which FreeBSD Update should figure out
# which actually are installed and upgrade those (StrictComponents no)?
# StrictComponents no
   ↑  は説明では『このオプションを yes に設定すると、 freebsd-update は Components のリストが完全に正しいと判断し、 このリスト以外の変更点については取り扱いません。 freebsd-update は、効率的に Components リストに属するファイルをアップデートします。』と書いてあります。  これは触らない方がよさそうなので、このままにしておきます。