by @nyarla

レンタルサーバでSVN::Web

さくらインターネットのスタンダードで SVN::Web を使ってみた。

最初無謀かと思った、というか十分無謀だったんだけどなんとかなったのでメモ。

ちなみに細かいところまで説明しきれない。

前提

まず前提として、Subversion の Perl バインドが有効になっていることと、CPAN が使えないとダメ。 そもそも Subversion がインストールできたなら CPAN も使えるはず。 ちなみにこれらについての説明はめどいので省略。

モジュールのインストール

次に shell で CPAN 起動して、

cpan > install SVN::Web

をしてみる。と大体モジュールが足りないとか言われるので、それらを突っ込む。で、たまにうまく入らないやつがあったりするんだけど、なんとかして入れる。

CPAN で入らない場合、自力で make make test すると原因が分かりやすい。たまに make test は問題なく通るのに make install で失敗するモジュールがあったんだけど、その場合、手動でコピーすれば問題なく使える。

SVN::Web のインストール

で、必要なモジュール入れ終わったら、もう一度

cpan > install SVN::Web

してみる。問題がない場合これでいけるはず。

ただ、自分の環境場合、テストは問題ないのになぜか共用領域に入れようとして、パーミッションがねーよといわれたので、~/.capn/build/SVN-Web-0.49lib の中身を ~/perl/lib に、bin の中身を ~/local/bin に突っ込んだ。

とりあえず問題なく使えてはいる。

CGI として動作させる

で、あとは SVN::Web を動作させたいディレクトリで

% svnweb-install

して、config.yaml を編集、index.cgi にアクセスすれば SVN::Web が使える。……といいたいところなんだけど、実は使えない。

そのまま CGI を動作させると、ライブラリがみつからない><みたいな事を言われる。これはたぶんユーザー領域にいれた Subversion にパスが通ってないのが原因。

Apache 側でパス通せればいいんだけど、やり方がわからないので、sh スクリプトで対処。

まず、オリジナルの index.cgi_index.cgi にリネーム。次に index.cgi を作成し、以下の内容を各環境に合わせて変更、保存する。

#!/bin/sh
export LD_LIBRARY_PATH= [[ライブラリのパス]]
export PERL5LIB= [[Perlモジュールへのパス]]
/usr/bin/perl  [[_index.cgiへのパス]]

でこの index.cgi にアクセスすると、問題なく動くはず。 で実際に動作しているのが以下のリンク。

ただし、匿名でチェックアウトできなかったりする。匿名でチェックアウトするには、Subversion 付属のサーバ使うか、Apache モジュールを使うかのどちらかなので、共用サーバではムリ。

あと公開したリポジトリに何にも入ってなかったりする。開発環境まだできてないよ。