8月 132015
 

以前のエントリで「SVN サーバを構築して FreeBSD のソースをミラーする。」と、いうのを書いたのですが、これはプロトコル的には http:// にしか対応していないんですね。svn co には http: とか https: で十分なのですが、そーではなく、ちゃんと port 3690 に対応したデーモンも起動してあげる必要がある。と、いうことですね。

と、いうことで今回は port 3690 で svn co できるようにします。

なお、 svn のミラーサイトの構築に付いては上の「SVN サーバを構築して FreeBSD のソースをミラーする。」をまず初めに読んでたください。その環境ができあがったあとの話として、今回のエントリとなります。

 
1), /etc/service の確認
default の FreeBSD の設定で入っているので、どーでも良い話なのですが、一応、以下のコマンドを叩いて確認します。

$ grep svn /etc/services
svn             3690/tcp   #Subversion
svn             3690/udp   #Subversion

 
大丈夫そうでしょうかね。

 
2), デーモンの設定
subversion をインストールすると svnserve というのが /usr/local/bin/svnserve としてインストールされています。こいつに -d オプションを指定してあげるとデーモンモードで起動して port 3690 に対してアクセスできるようになります。

/usr/local/etc/rc.d/svnserve と、いうファイルがあると思うので、そこの上の部分を持ってきて /etc/rc.conf に設定します。

僕の場合は以下のように指定しました。

svnserve_enable="YES"
svnserve_flags="-d --listen-port=3690 --listen-host 0.0.0.0"
svnserve_data="/home/svnweb"
svnserve_user="svn"
svnserve_group="svn"

 
svnserve_data で svn 用のディレクトリを指定します。
svnserve_user と svnserve_group の svn というのは存在していなかったのでユーザとグループを作成しました。

以上で設定は完了。あとは service svnserve start とすれば起動することでしょう。
telnet で port 3690 が開いているか確認します。

 
3), inetd での起動
svnserve は inetd 経由でも起動できるようです。 /etc/inetd.conf には以下の行を追加してみてください。

svn stream tcp nowait svn /usr/bin/svnserve svnserve -i
svn stream tcp6 nowait svn /usr/bin/svnserve svnserve -i

 
なんとっ!! svn は IPv6 には対応してないようで、実際には tcp6 という行は必要ないですね・・。orz
と、いうことで inetd を再起動して再度 telnet で port 3690 が開いているか確認します。
無事に接続できるようなのですが svn で取ってこようとするとエラーになるんですね。どうやら svnserve.conf という設定ファイルを用意すると、それを参照してくれるようなのですが FreeBSD の ports の devel/subversion は svnserve.conf を無視しているようです。

ports やソースコードを眺めたのですが conf/svnserve.conf というのが曖昧で、どこを指しているのか解らないんですね。あたた・・。

と、いうことで inetd モードは断念しました。

 
4), と、いうことで
デーモンモード起動して、とりあえずはヨシとしておきました。

今までは svn のミラーサイトは以下があったのですが、

http://svnweb.icmpv6.org/
http://svnwebv4.icmpv6.org/
https://svnweb.icmpv6.org/
https://svnwebv4.icmpv6.org/

これからはここに以下の URL も加わります;-)。

svn://svnweb.icmpv6.org/
svn://svnwebv4.icmpv6.org/

全部で三つのプロトコルに対応しました。ただし、 https の場合はヲレヲレ証明書なので、「証明書を無視する」オプションを有効にして利用して頂ければと思います;-)。

 
さてと。どうして svn:// に対応するようにしたか? というと、このあと書くであろうと思われるエントリで利用して行きたいと思います;-)。