murawaki の雑記

はてなグループから移転してきました

Installing Subversion

今更ながら Subversion をインストールした。いろいろはまったのでその記録。

背景。これまで特に問題もなく自分のプログラムを Subversion で管理してきたのだが、以下のエラーを吐いてうんともすんとも言わなくなった。

このクライアントは、作業コピー '.' を扱うには古すぎます。もっと新しい Subversion クライアントをダウンロードしてください。

原因はおそらく次の通り。作業コピーのあるディレクトリは NFS で共有されており、普段とは別の計算機で commit してしまった。svn を含むディレクトリは共有されておらず、この計算機の svn の方が、普段の計算機の svn より新しい。そして、作業コピーのフォーマットに下位互換性がないのだろう。

これでは仕事にならない。良い機会だから git に完全移行しようかとも思ったが、結局自分で svn を build する。取ってきたのは最新版の 1.6.6。試しに configure すると案の定通らない。Subversion が依存しているライブラリも軒並み古い。configure で文句を言われた順に、Apache Portable Runtime, apr-util, sqlite-amalgamation, BerkeleyDB をインストール。apr-util は BerkeleyDB に依存しているので、configure に --with-berkeley-db オプションをつけて build しなおす。

これでようやく Subversion の configure。-with-apr, --with-apr-util, --with-sqlite, --with-berkeley-db を直接指定。--with-berkeley-db の与え方が面妖で戸惑う。$HOME/local/include/db.h:$HOME/local/include:$HOME/local/lib:db でうまくいった。また、Apache のモジュールはいらないので --without-apxs とする。

しかしそれでもエラーが発生する。問題は configure の最後に実行する config.status。subversion/svn_private_config.h の @SVN_DB_HEADER@ を sed で適切な値に変換する処理でこけていた。手動で subversion/svn_private_config.h を書き換える。とりあえず make に成功。

実は make check するといくつかのテストで失敗していて激しく微妙なのだが、ひとまず上記のエラーが出なくなったし、他の不都合も出ていない。

2010/1/28 追記: この状態では http 上の通信をサポートしてなかったので neon をインストール。configure の option に --with-neon=$HOME/local を追加。