玄箱にCVSをインストールして、CVSサーバとしての準備を整えます。
CVSには、玄箱のためにコンパイルされたパッケージはありません。 このため、CVSのソースコードを取り寄せて、 玄箱上でコンパイルする必要があります。
CVSの本家 http://cvshome.org に 行ってみたところ、 ここにソースコードが置いてあるわけでは無いことがわかりました。
このページから誘われるまま、 http://ftp.gnu.org/non-gnu/cvs/に飛ばされ、 ディレクトリを掘り進んで、 cvs-1.12.13.tar.gz というファイルを いただいてきました。
ソースコードを取り寄せるためには、 WEBブラウザが必要です。 このため、この時には、取り寄せたファイルはまだPCにあります。
このファイルを玄箱に送り込むのは、簡単です。
玄箱をNASとして使用している場合には、
玄箱のネットワークディスクに書き込むと
/mnt/share
ディレクトリにソースコードが書き込まれます。
TELNETで玄箱にLOGINして、 ファイルを確認してみましょう。
root@NORITAN-BOX:~# tar tzvf /mnt/share/cvs-1.12.13.tar.gz | head -10 drwxrwxrwx 500/500 0 2005-10-03 22:43:45 cvs-1.12.13/ drwxrwxrwx 500/500 0 2005-10-03 22:42:58 cvs-1.12.13/build-aux/ -rwxrwxr-x 500/500 3703 2005-04-06 05:42:48 cvs-1.12.13/build-aux/compile -rwxrwxr-x 500/500 42037 2005-04-06 05:42:48 cvs-1.12.13/build-aux/config.guess -rwxrwxr-x 500/500 14869 2005-04-06 05:42:48 cvs-1.12.13/build-aux/config.rpath -rwxrwxr-x 500/500 30221 2005-04-06 05:42:48 cvs-1.12.13/build-aux/config.sub -rwxrwxr-x 500/500 15868 2005-04-06 05:42:48 cvs-1.12.13/build-aux/depcomp -rwxrwxr-x 500/500 9233 2005-04-06 05:42:48 cvs-1.12.13/build-aux/install-sh -rwxrwxr-x 500/500 5225 2005-04-06 05:42:48 cvs-1.12.13/build-aux/mdate-sh -rwxrwxr-x 500/500 10872 2005-04-06 05:42:48 cvs-1.12.13/build-aux/missing
使えるみたいですね。
それでは、/usr/local/src
に展開してみましょう。
展開の時にroot
アカウントで行うことをお忘れなく。
root@NORITAN-BOX:~# mkdir -p /usr/local/src root@NORITAN-BOX:~# cd /usr/local/src root@NORITAN-BOX:/usr/local/src# tar xzf /mnt/share/cvs-1.12.13.tar.gz
あっという間に展開されました。
ソースコードが手に入ったら、 コンパイルし、インストールします。
この後、コンパイルを行うのですが、 CVSのコンパイルのために色々なコマンド類が必要になりました。 私がインストールしたのは、以下の通り、ほとんどすべてのバイナリファイルです。 これらが本当に全部必要なのか否かについては検証していません。
total 60104 -rwxrwxrwx 1 noritan users 3369791 Feb 9 2004 binutils-2.10.91.0.2.tar.gz -rwxrwxrwx 1 noritan users 138844 Feb 9 2004 bison-1.28.tar.gz -rwxrwxrwx 1 noritan users 131552 Feb 9 2004 diff-2.7.tar.gz -rwxrwxrwx 1 noritan users 129143 Feb 9 2004 flex-2.5.4.tar.gz -rwxrwxrwx 1 noritan users 1447426 Feb 9 2004 g++-2.95.3.tar.gz -rwxrwxrwx 1 noritan users 9770179 Feb 9 2004 gcc-2.95.3.tar.gz -rwxrwxrwx 1 noritan users 2062156 Feb 9 2004 gdb-5.1.tar.gz -rwxrwxrwx 1 noritan users 665296 Feb 9 2004 gettext-0.10.35.tar.gz -rwxrwxrwx 1 noritan users 27949903 Feb 9 2004 glibc-2.2.3.tar.gz -rwxrwxrwx 1 noritan users 44161 Feb 10 2004 libgdbm-1.7.3.tar.gz -rwxrwxrwx 1 noritan users 54561 Feb 9 2004 m4-1.4.tar.gz -rwxrwxrwx 1 noritan users 164429 Feb 9 2004 make-3.79.1.tar.gz -rwxrwxrwx 1 noritan users 14890239 Feb 9 2004 perl-5.6.1.tar.gz -rwxrwxrwx 1 noritan users 317868 Feb 9 2004 texinfo-4.0b.tar.gz -rwxrwxrwx 1 noritan users 264838 Feb 9 2004 textutils-2.0.tar.gz
バイナリファイルのインストール方法は、 玄箱にプログラムを入れるに 書いてあります。
コンパイルの第一段階として、
コンパイルのための環境設定が必要です。
環境設定のためのスクリプトがconfigure
に入っています。
root@NORITAN-BOX:/usr/local/src/cvs-1.12.13# ./configure
5分ほどで環境設定が終わりました。 次は、いよいよコンパイルです。
root@NORITAN-BOX:/usr/local/src/cvs-1.12.13# make
これも5分ほどで終わりました。 出来上がった、バイナリを適当なところに配置します。
root@NORITAN-BOX:/usr/local/src/cvs-1.12.13# make install
これでCVSコマンドが使用できるようになりました。
root@NORITAN-BOX:/usr/local/src/cvs-1.12.13# cvs --version Concurrent Versions System (CVS) 1.12.13 (client/server) Copyright (C) 2005 Free Software Foundation, Inc.
CVSサーバは、文書などを格納するためにリポジトリという場所を使います。 まずは、リポジトリの場所を確保します。 リポジトリは、PCから簡単にバックアップを取ることができるように、 Sambaが管理するディスクに配置します。 玄箱に新規の共有フォルダ"cvs"を作成してから、以下の操作を行います。
root@NORITAN-BOX:/mnt/cvs# mkdir rep root@NORITAN-BOX:/mnt/cvs# chgrp users rep root@NORITAN-BOX:/mnt/cvs# chmod g+w rep root@NORITAN-BOX:/mnt/cvs# ls -ld rep drwxrwxr-x 2 root users 4096 Oct 29 18:37 rep
リポジトリを配置するための/mnt/cvs/rep
というディレクトリを
作成しました。
CVSクライアントがCVSサーバに要求をする時、
ロックファイルという特殊なファイルを作成するため、
リポジトリには書き込み権が必要です。
そのため、ディレクトリのグループを
すべての一般ユーザを示すusers
として、
グループに対して書き込み権を与えるためにディレクトリのモードを変更します。
最後にこのディレクトリがリポジトリとして使用できるように初期設定します。
root@NORITAN-BOX:/mnt/cvs# cvs -d /mnt/cvs/rep init root@NORITAN-BOX:/mnt/cvs# ls -al rep total 12 drwxrwxr-x 3 root users 4096 Oct 29 18:42 . drwxrwxrwx 5 root root 4096 Oct 29 18:37 .. drwxrwxr-x 3 root root 4096 Oct 29 18:42 CVSROOT
これで、リポジトリの準備は完了です。
CVSコマンドとリポジトリが出来上がったので、 玄箱単体ではCVSを使用することができるようになりました。 しかし、このままでは、 他のクライアントからの要求を受け付けることができません。
このような場合に
ネットワーク上のクライアントからの要求にしたがって、
対応するプログラムを起動させるのが、inetd
の役割です。
inetd
は、
/etc/inetd.conf
というファイルを基にして仕事をします。
CVSクライアントからの要求を処理するために、
/etc/inetd.conf
ファイルに以下の行を追加します。
# CVS server cvspserver stream tcp nowait root /usr/local/bin/cvs cvs --allow-root=/mnt/cvs/rep pserver
/etc/services
に記述されています。root
権限で動作します。cvs
というコマンドに対して、
--allow-root=/mnt/cvs/rep
というオプションと
pserver
というサブコマンドを送ります。
--allow-root=
というオプションこのオプションは、CVSサーバでで使用可能なリポジトリの位置を指定します。 CVSクライアントは、 CVSサーバに対してリポジトリの場所を指定してアクセスしてきます。 このため、このオプションを適切に設定しておかないと、 「CVSサーバが見せたくないと思っているファイル」まで 見られてしまう可能性がありますので注意が必要です。
複数のリポジトリを使用したい場合には、
--allow-root=
オプションをリポジトリの数だけ追加します。
最後に設定ファイルを書き換えたことをinitd
プロセスに知らせます。
root@NORITAN-BOX:/etc# ps -ef | grep inetd root 171 1 0 Sep23 ? 00:00:00 /usr/sbin/inetd root 18223 5196 0 22:27 pts/0 00:00:00 grep inetd root@NORITAN-BOX:/etc# kill -HUP 171
ps
コマンドでinetd
のプロセスIDを調べて、
HUP
シグナルを送ります。
これで、CVSサーバとしての準備は完了です。
Updated: $Date: 2006/11/06 12:46:35 $
Copyright (C) 2006 noritan.org ■