Subversionをソースからインストール
今仕事で、一般ユーザ権限しかないシステムを使わせてもらっている。自分の書いたコードをそのシステム上で実行するために、自分SubversionリポジトリからSVNコマンドでチェックアウトしようとしたところ、Subversionが入っていないことがわかった。仕方なく、自分でソースからコンパイルしてインストールすることにした。以下にSubversion 1.4.6のソースからのインストール方法をメモ。
1. アーカイブのダウンロード
Subversion本体と、Subversionの依存ライブラリがまとめられたアーカイブを公式ページからダウンロード。
$ wget http://subversion.tigris.org/downloads/subversion-1.4.6.tar.gz $ wget http://subversion.tigris.org/downloads/subversion-deps-1.4.6.tar.gz
2. 2つのパッケージを同じディレクトリに解凍
$ tar zxf subversion-1.4.6.tar.gz $ tar zxf subversion-deps-1.4.6.tar.gz
subversion-1.4.6ディレクトリが作成され、2つのアーカイブの内容が展開される。
3. configure
$ CC=/usr/bin/gcc CXX=/usr/bin/g++ \ > ./configure --prefix=/home/usr1/stakizaw/soft/subversion-1.4.6
4. make, make check, make install
自分以外にも大勢が利用しているマシン上で行ったためか、「make check」に1時間ほど時間がかかった。
$ make $ make check $ make install
ハマりどころは1と4。最初依存ライブラリアーカイブなしでmakeしてエラーを出してしまった。READMEを読むと、depsアーカイブが必要だということはきちんと書かれていた。また、depsアーカイブを展開した最初のmakeも次のエラーで失敗した。
libtool: link: warning: `/usr/lib64/gcc-lib/x86_64-suse-linux/3.3.3/../../..//libexpat.la' seems to be moved libtool: link: warning: `/usr/lib64/gcc-lib/x86_64-suse-linux/3.3.3/../../..//libexpat.la' seems to be moved /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.3/../../../../x86_64-suse-linux/bin/ld: /home/usr1/stakizaw/tmp/subversion-1.4.6/neon/src/.libs/libneon.a(ne_request.o): relocation R_X86_64_32 can not be used when making a shared object; recompile with -fPIC /home/usr1/stakizaw/tmp/subversion-1.4.6/neon/src/.libs/libneon.a: could not read symbols: Bad value collect2: ld returned 1 exit status make: *** [subversion/libsvn_ra_dav/libsvn_ra_dav-1.la] Error 1
-fPICオプションを付けてコンパイルしろと言われてしまった。この場合にはconfigureのオプションに「--with-pic」を付けてステップ3からやり直せば良い。
ちなみに、Subversionのバージョンが古いのは、昔まとめた作業記録を元に書いたから。