インストール

FreeBSD に入れたかったが、業務の都合上、しかたなく Turbo Linux 10 Server に入れる。
(最小構成にしたつもりなのに、いらないモノがインストールされすぎ・・・Linux 不慣れ克服しなくてわ!)
尚、本説明は、試験用の為、セキュリティ等を一切考慮していない。
(FreeBSD + ports の場合のインストール方法は、ずーっと下の方に追記した)

以下、全て /usr/local/src 配下で root ユーザで作業を行っている。

neon

http://www.webdav.org/neon/ ここから最新版をダウンロード

cd neon-0.26.0
./configure --with-ssl
make
make install

「--with-ssl」を忘れると、svn コマンド(クライアント)で SSL 通信ができなくなる。

Berkeley DB

http://dev.sleepycat.com/downloads/releasehistorybdb.html ここから最新版をダウンロード。
(以下、4.4.20 をダウンロードしたと仮定)

cd /usr/local/src/db-4.4.20/build_unix
../dist/configure --enable-compat185
make
make install

dist ディレクトリ内で configure を実行するとエラーとなるので気をつける必要がある。
作業後、/etc/ld.so.conf に「/usr/local/BerkeleyDB.4.4/lib」を追加し、/sbin/ldconfig を実行する。

expat

turbopkg で expat を予め入れていたが、Apache2 をインストールする際に expat 関連のヘッダファイルが無いとエラーが出たので、インストールしなおす。(面倒だったので・・・)
http://sourceforge.net/projects/expat/ ここから最新版をダウンロード。
(以下、2.0.0 をダウンロードしたと仮定)

cd /usr/local/src/expat-2.0.0
./configure
make
make install

Apache2

解に説明なし。面倒だった為、configure オプションも適当(笑
DAV を使う指定と Berkeley DB のディレクトリを指定する事。
(以下、2.2.0 をダウンロードしたと仮定)

cd /usr/local/src/httpd-2.2.0
./configure --enable-so=yes ?
    --enable-dav=yes ?
    --with-berkeley-db=/usr/local/BerkeleyDB.4.4 ?
    --enable-ssl=yes ?
    --with-ssl=/var/ssl
make
make install

作業後、/etc/ld.so.conf に「/usr/local/apache2/lib」を追加し、/sbin/ldconfig を実行する。

Subversion

http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=260 ここから最新版をダウンロード。
(以下、1.3.0 をダウンロードしたと仮定)

cd subversion-1.3.0
./configure --with-apxs=/usr/local/apache2/bin/apxs ?
    --with-apr=/usr/local/src/httpd-2.2.0/srclib/apr ?
    --with-apr-util=/usr/local/src/httpd-2.2.0/srclib/apr-util ?
    --with-berkeley-db=/usr/local/BerkeleyDB.4.4
make
make install

aprapr-util は、Apache2 インストール時の作業ディレクトリの Path を使用する。
「--with-apr」と「--with-apr-util」を省略すると下記のようなエラーが出るので気を付ける。

Can't set position pointer in file '/crypt/svn/repos/db/revs/0': Invalid argument

リポジトリ作成

mkdir /crypt/svn
svnadmin create /crypt/svn/repos
chown -R apache:apache /crypt/svn

Apache2 準備

httpd.conf に下記を追加

<Location /svn/repos>
  DAV svn
  SVNPath /crypt/svn/repos
</Location>

httpd.conf 内の User と Group が、daemon となっていたので apache に変更。
当然、apache ユーザと apache グループは事前に作成する必要がある。

Apache2 起動

apachectl configtest を実行した所、下記のエラーが発生。

Syntax error on line 235 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_dav_svn.so into server: libsvn_repos-1.so.0: cannot open shared object file: No such file or directory

何度確認しても、/usr/local/lib/libsvn_repos-1.so.0 が存在しているので、念の為に /sbin/ldconfig を実行すると解消・・・(へんだなぁ・・・orz)
apachectl start で起動。

確認

# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
OPTIONS /svn/repos/ HTTP/1.0

HTTP/1.1 200 OK
Date: Wed, 15 Mar 2006 10:45:31 GMT
Server: Apache/2.2.0 (Unix) DAV/2 SVN/1.3.0
DAV: 1,2
DAV: version-control,checkout,working-resource
DAV: merge,baseline,activity,version-controlled-collection
DAV: <http://apache.org/dav/propset/fs/1>
MS-Author-Via: DAV
Allow: OPTIONS,GET,HEAD,POST,DELETE,TRACE,PROPFIND,PROPPATCH,COPY,MOVE,LOCK,UNLOCK,CHECKOUT
Content-Length: 0
Connection: close
Content-Type: text/plain

Connection closed by foreign host.

ユーザ認証の設定

httpd.conf を下記のように修正

<Location /svn/repos>
  DAV svn
  SVNPath /crypt/svn/repos

  AuthzSVNAccessFile /etc/svn-access-file

  Require valid-user

  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/svn-auth-file
</Location>

/etc/svn-auth-file ファイルは、htpasswd コマンドで作成しておく。

/etc/svn-access-file ファイルは、下記の書式で作成する。

[/]
cooldaemon = rw

括弧でデリレクトリ名を囲い、その下にユーザ名と権限を記載する。

さて、次は、Trac だ。

追記(2007.05.05)

checkout 等、参照系の処理のみユーザ認証を行わない場合は、下記の通り。

<Location /svn/repos>
  DAV svn
  SVNPath /crypt/svn/repos

  AuthzSVNAccessFile /etc/svn-access-file

  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/svn-auth-file

  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept>
</Location>
[/]
* = r
cooldaemon = rw

追記(2007.04.14)

FreeBSD + ports の場合は、下記の通り。
apache の設定は省略。

cd /usr/ports/www/apache22
make && make && make clean

cd /usr/ports/devel/subversion
make WITH_MOD_DAV_SVN=YES WITH_APACHE2_APR=YES WITHOUT_BDB=YES && make install && make clean

WITHOUT_BDB を指定する事で、Berkeley DB ではなく、fsfs を使用する。