pserver経由でcvsを使う

はじめに

サーバ(Solaris)にあるcvsをpserver経由でクライアントから使うための設定方法である.以下の作業にはroot権限が必要である.

/etc/servicesの変更

まず,/etc/servicesに以下の記述を追加する.cvsが使用するポート番号(デフォルトは2401)と通信方法を記述する.

cvspserver 2401/tcp
        

/etc/inetd.confの変更

続いて,/etc/inetd.confに以下の記述を追加する.クライアントからの要求で動くコマンドの設定である.

cvspserver stream tcp nowait root /usr/local/bin/cvs -f --allow-root=/export/home/alpha/cvs-rep pserver
        

/usr/local/bin/cvsはcvsをインストールしたディレクトリ,--allow-rootには使用できるcvsのリポジトリのあるディレクトリを指定する.

inetd.confを反映する.

ps -ef|grep inetd
kill -HUP inetdのプロセス番号
        

kill -HUP後もinetdの起動時間やプロセス番号は変わらない.

複数リポジトリの設定

複数のリポジトリを指定する場合は/etc/inetd.confに複数記述する.

cvspserver stream tcp nowait root /usr/local/bin/cvs -f --allow-root=/export/home/alpha/cvs-rep --allow-root=/export/home/bravo/cvs-rep pserver
        

リポジトリをたくさん記述すると,文字制限で後ろの方が切れてエラーになる.その場合は,シェルスクリプトを作成する./usr/local/bin/cvs-allow-root.shとしよう.アクセス権があればどこに,どんな名前で作っても問題はない.

#!/usr/bin/sh
/usr/local/bin/cvs -f \
  --allow-root=/export/home/alpha/cvs-rep \
  --allow-root=/export/home/bravo/cvs-rep \
  --allow-root=/export/home/charlie/cvs-rep \
  pserver
        

実行権限は忘れずにつけること.

chmod +x /usr/local/bin/cvs-allow-root.sh
        

/etc/inetd.confの記述も変える.

cvspserver stream tcp nowait root /usr/local/bin/cvs-allow-root.sh
        

kill -HUP inetdのプロセス番号でinetd.confを反映させる.なお,/usr/local/bin/cvs-allow-root.shの修正にはinetdのkill -HUPは不要である.

エラーが出た

リポジトリへのアクセス時に以下のエラーが出る場合がある.

入出力例外が発生しました.接続が拒否されました.cvs pserver: syntax error in /export/home/alpha/cvs-rep/CVSROOT/config: line '' is missing '='
        

CVSROOT/configの改行コードがCRLFになっているかもしれないので,LFに変える.