私たちの FreeBSD のアプリケーションをメンテナンスしている間に OS 自身も 13.1 がリリースされました。そこで、今使用中の 13.0 から 13.1 へアップデートしてみたいと思います。私たちの FreeBSD の OS ではカスタマイズと言えるものは何にもしておりません。ですので、このアップデートは退屈なアップデート作業となると思います。が、とりあえずやってみましょう。
OS メジャーバージョンが同じなので、アプリケーション関係を触る必要が基本的にないことが大きいと思います。この辺りは次回 14.0-RELEASE が世に現れたときにやってみることができると思います。
マイナーバージョンアップデート
さて、現在のバージョンは 13.0-RELEASE-p11 です。アプリケーションもすべて最新のようです。
まず最初の手順は 13.0 で最新かどうか調べます。アップデートがあるならば、パッチレベルを最新にしておきます。が、既に最新のようです。
OS もアプリケーションも最新なので、13.1-RELEASE にアップデートします。
freebsd-update upgrade
OS をインストールするときに選択したコンポーネントを覚えていますか?それらがアップデートされるコンポーネントと一致すれば OK なので次に進みます。
必要なファイルをローカルにコピーして、その情報を基にしてアップデートの準備が行われます。
ここまで結構時間がかかります。インストールするまで変更は何も行われないので、コーヒーでも飲みながらゆっくりと行いましょう。今回はマイナーアップデートなので、更新ファイルも少ないと思われますが、これがメジャーアップデートであったり、マイナーバージョンが離れていたりすると更新ファイルが多くなります。ディスクの空き容量には気を付けましょう。更新ファイルが準備できた後、設定ファイルなどで意図しない更新がある場合、こう変更するがこれで OK か?と聞いてきます。変更が複雑な場合はエディタによるファイルの編集を求められます。いずれの場合も diff の出力の見方がわかれば問題ないと思います。
確認事項がすべてクリアとなれば準備完了です。指示通り更新ファイルをインストールします。
freebsd-update install
freebsd-update install コマンドは2回実行します。最初はカーネルだけがアップデートされ、再起動して新しいカーネルを実行し、そのうえで再度実行し、新しいカーネルで動く OS ファイルをインストールしてゆきます。
カーネルファイルがインストールされたので、再起動します。
これは不安定です 🙂 安定させましょう!
2回目の実行でカーネル以外をインストールして行きます。
システム daemon で古いファイルモジュールが実行されている場合もあるので、再起動します。
freebsd-update fetch
13.1 がリリースされた直後なので、 13.1-RELEASE-p0 が最新のパッチレベルのようです。が、念のため、freebsd-update fetch で最新かどうか確認しておきます。
これで完了です。たぶん、最も簡単なアップデートになったと思います。ここまで OS アップデート手順に記載されたそのまんまで OK なのも珍しいと思います。OS のメジャーバージョンが同じである場合はアプリケーションのバイナリ互換が基本的に保証されているので、ポーツやパッケージに手を付ける必要もなく、設定ファイルの変更で質問されたのも /etc/group ファイルだけでした。これが例えば 12.3 から 13.1 へのアップデートなどの場合、freebsd-update install を3回実行することになります。2回目と3回目の間にすることがポーツやパッケージの再インストールを行います。このステップの目的は、別のディレクトリへ移動された 12.3 の OS 関係の共有ライブラリを使用して実行されているアプリケーションを 13.1 のライブラリを使用して実行できるようにする作業が必要となります。そのうえで3回目の freebsd-update install で古い共有ライブラリが削除されます。この辺りの情報がこちらに書かれておりますし、自身でも 14.0-RELEASE が世に出たときに堪能できると思います 🙂
freebsd-update rollback
最後に、OS アップデート後期待通りにアプリケーションが動くかどうかテストをすると思いますが、もし 13.1 にアップデートすることにより動かなくなった機能がある場合、行えることは2つあります。簡単そうであれば、そのままで問題を修正する。何が悪いのか簡単にわかりそうもないのであれば、元の 13.0 に戻して実験環境で再現後、再度 13.1 にするか、次回 13.2 がリリースされたときにアップデートと修正を適用する。後者を選択される場合、元の状態に戻すことが簡単にできます。アップデートで更新されたファイルは /var/db/freebsd-update ディレクトリに保存されています。
再起動して完了です。
戻ってしまいました。お気づきかと思いますが、メジャーバージョンを跨いだアップデートやロールバックの場合、ポーツやパッケージの取り扱いに時間がかかります。基本的に rollback では新しいほうの OS の共有ライブラリは単に消えてなくなるので、13.1 で再作成されたポーツやパッケージの多くはロールバック後動かなくなる可能性が非常に高くなります。アップデートの場合は新旧両ライブラリが利用できますのでダウンタイムはアプリケーションの再起動の時間だけですが、ロールバックの場合はアプリケーションを作り直すまで動かないと思われるので、ダウンタイムが大きくなります。計画と実験が大切です。
さぁ、完璧でしょうか?全て OK なことが確認されたら不要になったファイルは削除しておきましょう。/var/db/freebsd-update をディレクトリごと削除して、同じ名前のディレクトリを作っておけば OK です。ディレクトリのモードは 700 のはずです。
以下広告
コメント