Windowsだと、「自動更新」が推奨されていて、そうしておくとネットに繋がっている限り、更新用のプログラムが自動的にダウンロードされて、PC終了時にインストールされるとかそういうことになっています。FreeBSDなんかも間断なく更新されている様で、従って環境構築したら終わりというわけではなくて、その後もアップデートしていくという作業が発生します。ここではそこら辺について。ただ、私も未だ試行錯誤の状態にあるので、まだまだ改良すべき部分はあると思います。
FreeBSDのアップデート
このサイトで説明した手順でデスクトップ環境を構築したものをアップデートしようとすると、作業は大まかに a) FreeBSDのアップデート、b) ports collectionからインストールしたもののアップデート、の二つに分かれます。ここではそのうちの前者、FreeBSDのアップデートについて。
ただ、こちらはメチャメチャ簡単です。端末を立ち上げて、以下のコマンドを実行すれば完了です。
# freebsd-update fetch |
# freebsd-update install |
ちなみに"freebsd-update fetch"で、「何もダウンロードするものはない」といわれたら、"freebsd-update install"は、不要です。
Ports Collectionからインストールしたもののアップデート
Ports Collectionからインストールしたものは、以下の手順でアップデートします。ただ、実際はこの手順だけですんなり終わることは少なく、エラーメッセージと格闘しながら最後まで持って行っているというのが実情です。
- ports treeを最新にします。端末を立ち上げて、以下のコマンドを実行します。
# portsnap fetch && portsnap update |
- 後は、次にコマンドを実行すれば、特に何もなければそれでアップデートは完了です。
コマンドオプションの-aは、新しいバージョンがあるものは全て更新する、-dは、古いバージョンのファイルを残さない、という意味です。-dオプションは、デフォルトの動作ではないのですが、これを指定しないとアプリ単位で更新が終わるたび「古いバージョンのファイルをどうするか」聞いてくるので、PCの前にずっといないと作業が完了しないことになります。デフォルトではない理由は、新しいバージョンが動かなかったときに前のバージョンに戻せなくなるからでしょうから、これはこれでちょっとリスクがある方法であるのは確かだと思います。
あとは、これだけだとどれだけ時間がかかるかわからないというのもあります。KDEあたりのインストールに時間のかかるやつがアップデート対象に入ったりすると、平気で一昼夜かかったりするので、そういう意味でもいきなり「portmaster -a -d」というのも困りものだったりするわけです。
それからportmasterのアップデートをportmasterでやるわけにもいかなかったりで、そこら辺を考えると次のようなステップを踏むのがいいのかなと思ってます。
- package databaseを強制アップデートします。これをやっておかないと大抵次のportversionがエラーで止まるからです。
- アップデートが必要なportsをピックアップします。
# portversion -v | grep "<" > $HOME/needupdate.txt |
こうやるとアップデートが必要なportsのリストがホームディレクトリのneedupdate.txtのファイルに保存されます。
- アップデートが必要なportsのportmasterが含まれている場合は、portupgradeを使ってアップデートします。
- /usr/ports/UPDATINGファイルを開いて、それと上のneedupdate.txtの内容を比較して、アップデートで特別な対処が必要なportsとその内容を控えます。
- 特別な対処が必要なportsをportmasterを使って先にアップデートします。
- needupdate.txtを見ながら、所要時間を見ながらportmaterを使ってアップデートしていきます。
これでもよくわからないエラーは起こったりします。それは、なんだかんだでネットで調べたりportsの中のデータを見たりして、対処していくことになります。
あとは、この作業をどのくらいの頻度でやったらいいかですが、FreeBSDのportsは結構な頻度で更新されているので、一ヶ月とか間を開けてアップデートしようと思うと簡単に一日作業になったりします。かといって、一週間の間隔でやるというのも、鬱陶しいっちゃ鬱陶しいので、悩ましい所です。全部アップデートせんといかんかという問題もありますが、各ports間の依存関係はかなり密接なので、一部だけやると下手をするとデスクトップ環境が起動しなくなったりするので、全部やるのが安全というのが、これまでの経験です。
Ubuntuあたりは、Synapticでここら辺の管理がコンパイル作業なしでできてしまうので、簡単だしかかる時間も短いので、やっぱりこちらの方が圧倒的に楽なのは確かです。まあ、私はプラモデルの車を買いに来たんであって、完成品のミニカーを買いに来たわけではないんで、これでいいんですが。
(2011年 1月29日 記)