FreeBSD / OSUpdate / CVSup


FreeBSD/OSUpdate

CVSup を利用する。

これは最新のソースコードを入手し、自分でコンパイルし更新していく方法。OS に自分で手を入れている場合は、この方法を取る必要がある。

/usr/src, /usr/doc の更新

ソースコードは /usr/src, /usr/doc にある。doc はドキュメントだけど。これらを最新の状態に更新する。

cvsup のインストール

更新には cvsup または csup を使う。6.1-STABLE 以降ならば csup がベースシステムに含まれているが、それ以前なら ports から cvsup をインストールしなければならない。

cvsup はインストール時に ezm3 を利用する。しかし、これは cvsup のインストール時以外には、まず利用されない。そこで、cvsup は packages を使ってインストールする。

# pkg_add -r cvsup-without-gui

これで、リモートから package を取ってきてインストールまでする。

え?ports 使うより、こっちの方が楽?ある意味正しい。でも、port の更新と package の更新には時差がある。だから port 使う方が安心。

fastest_cvsup のインストール

cvsup の対象とするサーバを選択するために fastest_cvsup をインストールする。

# pkg_add -r fastest_cvsup
# rehash

root のログインシェルは csh であるため、最後の rehash を実行しないと、インストールしたばかりの fastest_cvsup をコマンド実行パスから見つけることができない。これ以降、インストールしたばかりのコマンドはすぐには使えなくても驚かない。あわてずに rehash を実行する。なお、これ以降のコマンド実行例では rehash は省略する。

rehash を実行しても実行できない場合、コマンド実行パスがどうなっているかを確認する。環境変数 PATH を見ればよい。また pkg_info -L を使って、インストールした ports がどこに何をインストールしたかを確認してみるのも役に立つ。

fastest_cvsup の実行

早速使う。

# fastest_cvsup -c jp

日本国内のサーバの中でもっとも近いものを探す。


/etc/make.conf の設定

以下の行を /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 宛にメイルされる。

UPDATING の確認

/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 の実行

# mergemaster -p

を実行。オプションを忘れないように。いくつか質問が出るかもしれないが、ほどよく回答。

システムのインストール

# make installworld

を実行。しばらく待つ。


古いファイルの削除

# make delete-old

不要なファイルは消しておかないとね。

更新された設定ファイル類をインストール

# mergemaster -i

設定ファイル類を更新する。ローカルに変更しているファイル類について、更新するか、既存のものを残すか、merge するか聞かれる。たいていは、新しいものをインストールすればよい。/etc/hosts などは、そのマシンの IP アドレスなどが記述されているはずなので、既存のものを残す。

ここの記述に沿ってシステムをインストールしている場合 sendmail は使わず postfix を使うようになっているので、sendmail 関係の設定ファイルはどうでも良い。

というか、sendmail 自体を更新しないようにするべきだね。そのうち記述変更しよう。だれか変更してくれても良いよ:-)

更新されたシステムを使って立ち上げ

まず、お祈りをささげた後で、

# reboot

うまく立ち上がると良いね。

最新の20件

2019-06-01 2019-05-20 2019-05-13 2015-08-29 2009-11-07 2009-06-06 2008-12-20 2006-09-22 2006-06-20 2006-06-19

  • counter: 63
  • today: 1
  • yesterday: 0
  • online: 1