Feb 13, 2006

さくらの専用サーバ環境のための準備運動

まださくらの専用サーバが使える状態になっていないので、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

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com