Subversion1.7をソースからコンパイルしてインストールする方法

CentOS 5.3 (x86_64)にSubversion1.7をインストールする方法を紹介します。

svn 1.7からはワーキングコピーの管理方法とHTTP通信のパフォーマンスが大幅に改善されて、いろんな作業が高速になります。

実はコンパイルに苦労して半日かかりました。
この手順どおりにやればすんなりいけると思います。

openldap-develをインストール

sudo yum install openldap-devel
openldap-develを入れずにsubversionをmakeすると、下記のようなエラーが出ます。
/usr/bin/ld: skipping incompatible /usr/lib/libldap.so when searching for -lldap
/usr/bin/ld: skipping incompatible /usr/lib/libldap.a when searching for -lldap
/usr/bin/ld: cannot find -lldap
collect2: ld returned 1 exit status
make: *** [subversion/libsvn_subr/libsvn_subr-1.la] Error 1
CentOS5.3でSubversion1.7.5をconfigure & makeしたらエラーが出ました

neonをコンパイル&インストール

最新のneonをインストールしておきましょう。

http://www.webdav.org/neon/
wget http://www.webdav.org/neon/neon-0.29.6.tar.gz
tar xvfz neon-0.29.6.tar.gz
cd neon-0.29.6
./configure --with-ssl
make
sudo make install
これを入れないと、httpプロトコルでの通信ができないです。

subversion1.7とsqlite 3071200のソースコードを取得

wget http://www.sqlite.org/sqlite-amalgamation-3071200.zip
wget http://ftp.meisei-u.ac.jp/mirror/apache/dist/subversion/subversion-1.7.5.tar.gz
tar xvfz subversion-1.7.5.tar.gz
unzip sqlite-amalgamation-3071200.zip
ダウンロードして解凍したら、sqliteをsubversionディレクトリの中に移動します。
mv sqlite-amalgamation-3071200 subversion-1.7.5/sqlite-amalgamation

subversion1.7.5をコンパイル&インストール

やっと準備完了です。
cd subversion-1.7.5
./configure --with-neon --with-ssl
make
makeが成功したら、生成されたバイナリをたたいてバージョンを確認します。
$ subversion/svn/svn --version

svn, version 1.7.5 (r1336830)
   compiled May 20 2012, 07:29:05

Copyright (C) 2012 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/

The following repository access (RA) modules are available:

* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
  - handles 'http' scheme
  - handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
  - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' scheme
バージョンが1.7.5、そしてra_neonモジュールがちゃんと組み込まれています!

動作確認します。
$ subversion/svn/svn log https://path/to/repo/trunk --limit 10
これでログがちゃんと表示されたらOKです。

ではインストール!
sudo make install
デフォルトでは/usr/local/bin/svnにインストールされます。
/usr/local/bin/svn --version
/usr/local/bin/svn log https://path/to/repo/trunk --limit 10
しばらく触ってみて、問題なければyumのsvnをアンインストールしましょう。
sudo yum remove subversion

感想

svnコマンドの動作がめちゃ速くなりました。
svn 1.6では妙なもっさり感がありましたが、svn1.7は本当にきびきび動きます。
特に、svn stの結果が一瞬で表示されるのがありがたいです。

これで開発がサクサク進むこと間違いなし!

注意点

svn 1.7.5で、svn switchのバグに遭遇しました。
svn: E235000: In file 'subversion/libsvn_wc/update_editor.c' line 1583:
 assertion failed (action == svn_wc_conflict_action_edit ||
 action == svn_wc_conflict_action_delete || action == svn_wc_conflict_action_replace)
このバグのようです。
http://subversion.tigris.org/issues/show_bug.cgi?id=4160

回避策がわかったので記事を書きました。
Solution to "svn: E235000: In file 'subversion/libsvn_wc/update_editor.c' line 1583: assertion failed"
カテゴリ:

人気記事