これは最新のソースコードを入手し、自分でコンパイルし更新していく方法。OS に自分で手を入れている場合は、この方法を取る必要がある。
ソースコードは /usr/src, /usr/doc にある。doc はドキュメントだけど。これらを最新の状態に更新する。
更新には cvsup または csup を使う。6.1-STABLE 以降ならば csup がベースシステムに含まれているが、それ以前なら ports から cvsup をインストールしなければならない。
cvsup はインストール時に ezm3 を利用する。しかし、これは cvsup のインストール時以外には、まず利用されない。そこで、cvsup は packages を使ってインストールする。
# pkg_add -r cvsup-without-gui
これで、リモートから package を取ってきてインストールまでする。
え?ports 使うより、こっちの方が楽?ある意味正しい。でも、port の更新と package の更新には時差がある。だから port 使う方が安心。
cvsup の対象とするサーバを選択するために fastest_cvsup をインストールする。
# pkg_add -r fastest_cvsup # rehash
root のログインシェルは csh であるため、最後の rehash を実行しないと、インストールしたばかりの fastest_cvsup をコマンド実行パスから見つけることができない。これ以降、インストールしたばかりのコマンドはすぐには使えなくても驚かない。あわてずに rehash を実行する。なお、これ以降のコマンド実行例では rehash は省略する。
rehash を実行しても実行できない場合、コマンド実行パスがどうなっているかを確認する。環境変数 PATH を見ればよい。また pkg_info -L を使って、インストールした ports がどこに何をインストールしたかを確認してみるのも役に立つ。
早速使う。
# fastest_cvsup -c jp
日本国内のサーバの中でもっとも近いものを探す。
以下の行を /etc/make.conf に付け加える。
SUP_UPDATE= YES SUP= /usr/local/bin/cvsup SUPFLAGS= -g -L 2 SUPHOST= cvsup.jp.FreeBSD.org SUPFILE= /usr/share/examples/cvsup/stable-supfile DOCSUPFILE= /usr/share/examples/cvsup/doc-supfile
6.1-STABLE ならば SUP は /usr/bin/csup にする。
SUPHOST は fastest_cvsup の実行で得られた最適なものを指定する。
ports collection は portsnap を使って更新しているので、PORTSUPFILE を指定しないように注意。
/usr/src で make update を実行すればよい。内部で cvsup を呼び出して更新してくれる。
# cd /usr/src # make update
portsnap 同様、自動で起動するようにする。/etc/crontab に以下の行を追加する。
# cvsup 34 5 * * * root cd /usr/src; make update
これで、毎晩 5:34 に更新が実行される。更新結果は root 宛にメイルされる。
/usr/src/UPDATING に、更新に当たっての注意事項が載っている。作業前に必ず目を通すこと。更新に当たって特殊な手順が必要になるような変更が加えられることがあるから。ここに書いている手順を鵜呑みにしては危険かもしれない。
dump コマンドなどを使って、重要なデータはバックアップを取っておく。大事なデータが無い!と断言できるなら、バックアップ無しで進めても良いが、失敗してもしらない;-)
/usr/src で make buildworld を実行
# cd /usr/src # make buildworld
記述が面倒なので root での実行例を示している。しかし、実際には、一般ユーザでログインし sudo を使って実行するべき。
とりあえず GENERIC カーネルを更新する。
# make kernel
GENERIC ではない、カスタマイズしたカーネルを使っている場合には、UPDATING にあるように
# make kernel KERNCONF=foo_bar
のように、foo_bar にカーネルの config ファイル名を指定する。カーネルのカスタマイズについてはここでは記述しない。興味があるなら自分で調べること。
ここからの作業は、マルチユーザモードのままで実行すると危険。なので、シングルユーザモードへ移行する。シングルユーザモードに移行するためには、リブートする。ブート時に FreeBSD のブートメニューが表示させたところで、
4. Boot FreeBSD in single user mode
を選択する。シングルユーザモードで起動した場合、ネットワークからのログインなどはできない。シングルユーザモードからマルチユーザモードに移行するには、いくつかの方法があるが、リブートしてしまうのが簡単かな。
しかし、勇気を持って、マルチユーザモードのままでやっても、大丈夫なことも多い。決して勧めるわけではない。
# mergemaster -p
を実行。オプションを忘れないように。いくつか質問が出るかもしれないが、ほどよく回答。
# make installworld
を実行。しばらく待つ。
# make delete-old
不要なファイルは消しておかないとね。
# mergemaster -i
設定ファイル類を更新する。ローカルに変更しているファイル類について、更新するか、既存のものを残すか、merge するか聞かれる。たいていは、新しいものをインストールすればよい。/etc/hosts などは、そのマシンの IP アドレスなどが記述されているはずなので、既存のものを残す。
ここの記述に沿ってシステムをインストールしている場合 sendmail は使わず postfix を使うようになっているので、sendmail 関係の設定ファイルはどうでも良い。
というか、sendmail 自体を更新しないようにするべきだね。そのうち記述変更しよう。だれか変更してくれても良いよ:-)
まず、お祈りをささげた後で、
# reboot
うまく立ち上がると良いね。