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に変える.