さくらの専用サーバ環境のための準備運動
まださくらの専用サーバが使える状態になっていないので、VMware Workstation 5.5の上に環境を構築して準備運動をすることにする。
FreeBSD 5.4から6.0へのアップグレード
さくらの環境はFreeBSD 5.4 Releaseなので、いずれは6.0-STABLE系に移行したい。まず、その練習。
まず、cvsupをインストールする。portsからbuildしてもよいがちょっと使うだけなのでpackageからインストールすれば十分。
# pkg_add -r cvsup-without-gui # rehash
次にcvsup用のsupfileを用意する。
*default host=cvsup3.jp.FreeBSD.org *default base=/var/db *default prefix=/usr *default release=cvs tag=RELENG_6_0 *default delete use-rel-suffix *default compress src-all
6.0-STABLE用なのでRELENG_6_0。cvsup用のサーバはネットワーク的にcvs3.jp.FreeBSD.orgが近いはず(さくらの専用サーバは新宿のデータセンターに収容されているらしい)。
用意したsupfileを使ってcvsupを実行する。
# cvsup -L 2 -g supfile
/usr/objが空でなければ念のためクリア。
# cd /usr/obj # chflags -R noschg * # rm -rf *
いよいよbuild & installする。非常に時間がかかる。
# make -j4 buildworld # make buildkernel # make installkernel # make installworld
make installworldしても/etcの下は以前のままの状態になっているので、mergemasterを使ってアップデートしてやる必要がある。
# cd / # tar cf /etc.tar etc (バックアップしておく) # mergemaster -siva (現在/etcにないファイルだけコピー) # mergemaster -sivr (変更のあるファイルを反映→かなり面倒)
それが済んだらrebootする。
# reboot
無事にrebootしてきたらok。
compat5xをインストール
5.4用にビルドされたバイナリを6.0上で正常に動作させるためにはcompat5xライブラリのインストールが必要になる。例えば、冒頭でpackageからインストールしたcvsupは5.4用のバイナリなので、compat5xライブラリを使って実行しないと正常に機能しない、ということが起き得る。
portsを更新してから、compat5xライブラリをインストールする。前のエントリーでインストールしておいたcvsupを使ってやってもよいが、6.0では標準でインストールされているportsnapを使った方が楽だし、速い。
# portsnap fetch # portsnap extract # cd /usr/ports/misc/compat5x # make; make install # make clean
compat5xライブラリが使えるようにldconfigを実行しておく。
# /sbin/ldconfig -m /usr/local/lib/compat
/etc/rc.confに以下の行を追加しておくと、起動時に毎回ldconfigしてくれるようになるので設定しておくとよい。
compat5x_enable="YES"
/lib、/usr/libの中の古いファイルは削除するかバックアップディレクトリに移動しておく。例えば以下を実行すると、/libの下の/boot/kernel/kernelより古いファイルでディレクトリではないものを/lib/backup以下に移動する。
# mkdir /lib/backup # mv `find /lib -not \( -newer /boot/kernel/kernel -or -type d \) -print` /lib/backup
作業後、古いバイナリに対して/usr/local/lib/compat以下のダイナミックライブラリが使われていれば問題ない。
# ldd /usr/local/bin/cvsup
/usr/local/bin/cvsup:
libz.so.2 =< /usr/local/lib/compat/libz.so.2 (0x28109000)
libutil.so.4 =< /usr/local/lib/compat/libutil.so.4 (0x28119000)
libmd.so.2 =< /usr/local/lib/compat/libmd.so.2 (0x28125000)
libm.so.3 =< /usr/local/lib/compat/libm.so.3 (0x2812f000)
libc.so.5 =< /usr/local/lib/compat/libc.so.5 (0x2814a000)
ついでなので、すでにportsからインストール済みのソフトウェアで5.4用のものがないか確認して、6.0用に入れなおしておくとよい。
# pkg_info compat5x-i386-5.4.0.8_5 A convenience package to install the compat5x libraries cvsup-without-gui-16.1h_2 General network file distribution system optimized for CVS localedata-5.4 Legacy locale data for FreeBSD 6+ perl-5.6.2_2 Practical Extraction and Report Language
てな感じで表示されるパッケージのうち、compat5x-i386-5.4.0.8_5とlocaledata-5.4以外のものは5.4用のもののはずである。その証拠に例えば、ldd /usr/local/bin/perl5.6.2とかやるとcompatライブラリを使っていることが分かる。
# ldd /usr/local/bin/perl5.6.2
/usr/local/bin/perl5.6.2:
libperl.so => /usr/local/lib/perl5/5.6.2/mach/CORE/libperl.so (0x28076000)
libm.so.3 => /usr/local/lib/compat/libm.so.3 (0x28140000)
libc.so.5 => /usr/local/lib/compat/libc.so.5 (0x2815b000)
libcrypt.so.2 => /usr/local/lib/compat/libcrypt.so.2 (0x28235000)
libutil.so.4 => /usr/local/lib/compat/libutil.so.4 (0x2824d000)
ひとまず削除してから、packagesからインストールし直す(portupgradeもあると便利なのでついでにインストールする)。
# pkg_delete perl-5.6.2_2 cvsup-without-gui-16.1h_2 # pkd_add -r perl cvsup-without-gui portupgrade
packagesじゃなくて最新のportsからbuildしてインストールしたい場合には追加で以下を実行すればよい。
# rehash # portupgrade -a -P
Comments and Trackbacks