新トップページへ | Tip

CVSサーバーを作成する上での個人的メモ

LastUpdate : 08/04/07

 CentOS5.1(64Bit版)にて、CVSサーバー(pserver)を構築する際の、作業メモです。

インストール
yumを使ってとりあえずインストール
ネットワーク越しに接続
ネットワーク越しに接続できるように設定(Eclipseからリポジトリを参照)

yumを使ってとりあえずインストール

デフォルトでcvsはインストールされないみたいです。

[root@cvs_server ~]# yum list installed | grep cvs
[root@cvs_server ~]#

なので、yumを使ってインストールします。

[root@cvs_server ~]# yum install cvs

ネットワーク越しに接続できるように設定(Eclipseからリポジトリを参照)

直接アクセスする場合、2401番ポートを空けておく設定をしないといけません(ここでは省略)。

yumによって、インストール直後、/etc/xinetd.d/cvsファイルは以下のようになっていました。

/etc/xinetd.d/cvs
[root@cvs_server ~]# cat /etc/xinetd.d/cvs
# default: off
# description: The CVS service can record the history of your source \
#              files. CVS stores all the versions of a file in a single \
#              file in a clever way that only stores the differences \
#              between versions.
service cvspserver
{
        disable                 = no
        port                    = 2401
        socket_type             = stream
        protocol                = tcp
        wait                    = no
        user                    = root
        passenv                 = PATH
        server                  = /usr/bin/cvs
        env                     = HOME=/var/cvs
        server_args             = -f --allow-root=/var/cvs pserver
#       bind                    = 127.0.0.1
}
[root@cvs_server ~]#

デフォルトでは、リポジトリのディレクトリは /var/cvs を使う様子です(server_argsで指定されている)。
変更したい場合はここを変更します。
今回は、特に/var/cvsではダメな理由がないため、デフォルトの設定に従います。
 また、disable = yes になってる場合は、cvsが動作しない設定なので、disable = no にしておきます。

また、userの指定がrootになっています。変更したい場合は変更してください。

●まずは、リポジトリを初期化します。

[root@cvs_server cvs]# ls -al ←初期化前に、/var/cvsディレクトリの中を表示させてみる
total 16
drwxr-xr-x 2 root root 4096 Mar 17 2007 .
drwxr-xr-x 23 root root 4096 Apr 13 18:44 ..
 ←空っぽです
[root@cvs_server cvs]# cd ←なんとなく移動してしまいました(意味は無いです
[root@cvs_server ~]# cvs -d /var/cvs init ←初期化を行う
[root@cvs_server ~]#
[root@cvs_server ~]# ls -al /var/cvs 
← 初期化後、/var/cvsディレクトリの中を表示
total 24
drwxr-xr-x 3 root root 4096 Apr 13 19:30 .
drwxr-xr-x 23 root root 4096 Apr 13 18:44 ..
drwxrwxr-x 3 root root 4096 Apr 13 19:30 CVSROOT 
←が追加されている
[root@cvs_server ~]#

-d の後に、リポジトリなどを保管するためのディレクトリを指定します。

●次に、cvs内での識別・認証に使う、ユーザの追加&パスワードの設定を行います。

ファイルの読み書きを行う際、使用されるアカウントを作成します( cvsuserというユーザを追加 )。この設定により、cvsサーバの利用ユーザがリポジトリへアクセスを行う際の、操作権限はcvsuserとしてアクセス可能になります(linux上にアカウントがなくても、cvsを介してチェックアウト・コミットができるようになります)。

[root@cvs_server CVSROOT]# adduser cvsuser
[root@cvs_server CVSROOT]# passwd cvsuser
Changing password for user cvsuser.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@cvs_server CVSROOT]#

cvsサーバがアクセスしてきたユーザを識別・認証するための、cvs内で使用される、ユーザID&パスワードファイルを作成する。

[root@cvs_server CVSROOT]# pwd ←cvsのリポジトリ内のCVSROOTディレクトリに移動する
/var/cvs/CVSROOT
[root@cvs_server CVSROOT]# htpasswd -c passwd nyannyan 
←最初はpasswdファイルは存在しないため-cオプションをつける。nyannyanというのはユーザ名
New password: 
←パスワードを入力
Re-type new password: 
←パスワードを再入力
Adding password for user nyannyan
[root@cvs_server CVSROOT]# htpasswd passwd wannwann 
←二人目のユーザを追加。以下、上と同じ
New password:
Re-type new password:
Adding password for user wannwann
[root@cvs_server CVSROOT]#

htpasswdはapacheとかと一緒にインストールされるツールみたいです。
htpasswdを使い、とりあえず、passwdファイルを作成します(↑)。そして、仕上げに、手作業で以下のような、変更を加えます。

[root@cvs_server CVSROOT]# cat passwd
nyannyan:tglnltP1VsVnE
wannwann:Tdz2zZesXHZe6
[root@cvs_server CVSROOT]#

↓以下のように、行の最後に、「:ユーザ名」を付け加えます(コロンの後のユーザ名は、先ほど、ファイルの読み書きを行う時に使う用に作成したlinuxのアカウントを指定します)

[root@cvs_server CVSROOT]# cat passwd
nyannyan:tglnltP1VsVnE:cvsuser 
←「:cvsuser」を追加
wannwann:Tdz2zZesXHZe6:cvsuser 
←「:cvsuser」を追加
[root@cvs_server CVSROOT]#

これで、ここに乗っかっているユーザ(nyannyanとwannwann)は、cvsのリポジトリアクセスの際、cvsuserとしてアクセス可能となり、リポジトリからファイルの読み出しなどが可能になります。

●今度は、リポジトリのディレクトリのパーミッションを設定します。

[root@cvs_server var]# ls -al |grep cvs
drwxr-xr-x 3 root root 4096 Apr 13 19:30 cvs
[root@cvs_server var]# chown -R cvsuser cvs
←cvsディレクトリ以下すべてのディレクトリの所有者をcvsuserに変更
[root@cvs_server var]# ls -al |grep cvs
drwxr-xr-x 3 cvsuser root 4096 Apr 13 19:30 cvs
[root@cvs_server var]#

とりあえず、cvsuserが読み書きできるように設定すればいいと思います。

●設定を有効にする(xinetdの再起動)

 cvsをインストールし、設定を行った直後の場合、設定が有効になっていないため「 service xinetd restart 」とでもして、xinetdを再起動させてください(xinetd経由で使用する場合。CentOSでyumでインストールすると、これがデフォルトっぽい?)。これで、設定が有効になります(上で書いた、/etc/xinetd.d/cvsファイルの設定)。

※また、ファイヤーウォールが設定されている場合、cvsのポート(2401番)をオープンにしておいてください。

●Eclipseからリポジトリを参照する

Eclipseより、「リポジトリエクスプローラ」から、リポジトリロケーションの追加を行います。

ロケーションのところでは
「ホスト」には、サーバのアドレスを入力します。
「リポジトリー・パス」には リポジトリのパスを入力します。

認証のところでは
「ユーザー」には、cvsにpasswdファイルを作成し、登録を行ったユーザー名前を入力します。
「パスワード」には、↑に対応するユーザーのパスワードを入力します。

接続のところでは
「接続タイプ」をpserverに選択します。

これで「終了」ボタンを押せば、リポジトリに接続できるはずです。