Subversion 導入

TeraStationSubversion をインストールしてみることに。

Subversion の最新バージョンは 1.4.4 だけれど、なんかうまくいかなかったので、1.3.2 をインストールすることに。と、その前に、libpthread.a と libpthread_nonshared.a が /usr/lib にないとエラーが出るようなので、/mnt/array1/share/usr/lib にあったこれらのファイルへのシンボリックリンクを作成しておいた。また、shared library を使うと、ビルド後にコマンドを実行したときに

/mnt/array1/share/usr/local/bin/svn: error while loading shared libraries: /mnt/array1/share/usr/local/lib/libapr-0.so.0: R_PPC_REL24 relocation at 0x0fcec990 for symbol `64' out of range

というエラーが発生してしまったため、shared library を作らずにいくことに。インストール先はいつも通り /mnt/array1/share/usr/local ということにして、

% sudo ./configure --prefix=/mnt/array1/share/usr/local --disable-shared
% make
% sudo make install

でインストール。こう書くとあっさりだけれど、ここに至るまでにあれこれ試行錯誤した。あとは、/mnt/array1/share/usr/local にできた、svn、svnadmin、svnserveシンボリックリンクを /usr/bin へ作成。これで準備は完了だ。

ここからは、Subversion によるバージョン管理を大いに参考にさせていただいた。
リポジトリの作成は svnadmin create で簡単にできる。

% svnadmin create /path/to/svn/repository

リポジトリが作成できたら、外からアクセスできるように設定ファイルを編集する。今回は、svnserve をサーバとして使うことにする。面倒なのでとりあえずは ssh も使わない(というかまだインストールもしていない)。リポジトリ内の conf フォルダにある2 つのファイル(svnserve.conf と passwd)を編集する。このファイルはすでにテンプレートのようになっているので、必要な部分のコメントを外して設定を変更していくだけでいい。デフォルトで、匿名アクセスは読み取り専用、認証アクセスは書き込み可能、パスワードファイルは passwd となっているので、そのままコメントを外すだけとした。passwd ファイルは、使いそうなアカウントを適当に設定。ssh 経由ではなくて独自の認証となるので、TeraStation に設定してあるアカウントと一致させる必要もないようだ。

  • 動作確認

設定ができたら、サーバ(svnserve)をテストする。いきなり svnserve -d としてしまうとデーモンとして起動してしまい、kill で止めるしかなくなってしまうので、

% svnserve -r /path/to/svn/repository --foreground -d

というように、--foreground オプションをつけて起動するのがよさそう(これだと Ctrl-C(Terminal からは Cmd-.)で停止させることができるため)。最初、-X オプションを使う方がよいのかと思ったのだが、アクセスしようとした時点でサーバが止まってしまいアクセス拒否状態になってしまった。設定が悪いのかと思いあれこれ確認してみたが結局原因が判らず、試しに --foreground オプションを使ってみたら何事もなくアクセスすることができた。
設定がうまくいっているようであれば、 svnserve -r /path/to/svn/repository -d でデーモンとして起動させる。あとは TeraStation の起動時に自動的に起動するようスタートアップスクリプトを準備すれば完璧かな。これはまだ試していないが、ここらあたりが参考になりそう。
あとは使うのみ!