「お、これいいじゃん」と思って使ってみたのだが、mod_dav_svnではなくてsvnserveを使うように設定されている。こいつでApache経由でhttpアクセスしようとする(mod_dav_svnを使おうとする)と結構ハマりポイントがある…。
1.SVNのlibが読まれていない
/opt/bitnami/apache2/conf/httpd.conf のLoadModuleのコメントを外す。LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so
で、Apacheを sudo apachectl restart …でフツーにモジュールが読み込まれるつもりだったのだが次のエラーが出る。
Cannot load /opt/bitnami/apache2/modules/mod_dav_svn.so into server: libsvn_repos-1.so.0: cannot open shared object file: No such file or directory
ldconfig -p すると確かにlibsvn_repos-1.so.0が読み込まれていない。
bitnamiではsvnは/opt/bitnami/subversionにインストールされているので、/etc/ld.so.conf.d/libc.conf に /opt/bitnami/subversion/lib を追加してsudo ldconfigする。
再度ldconfig -p すると今度は読み込まれているはず。
この状態でsudo apachectl restartするとOK.
2.SVNが依存しているSQLiteがthread-safeじゃないと怒られる
で、Couldn't perform atomic initialization
なんのこっちゃわからん。apacheのエラーログを見ると…
SQLite is required to be compiled and run in thread-safe mode
ググると、SQLiteを --enable-threadsafeをつけてコンパイルしなおせと。
しかしそう言うことではなかった。
まず、lddでmod_dav_svn.soが参照しているライブラリを調べる。
ldd /opt/bitnami/apache2/modules/mod_dav_svn.so libsqlite3.so.0 => /usr/lib/libsqlite3.so.0
ありゃ、SQLiteは /opt/bitnami/sqlite に入っているはずだが…
なるほど/usr/lib/libsqlite3.so.0があかんのか。
/user/lib/libsqlite3.so.0 をls -l で調べてみとシンボリックリンクだ。
libsqlite3.so.0 -> /usr/lib/libsqlite3.so.0.8.6
じゃあ、この先を変えてやればいいか。
ln -s libsqlite3.so.0 /opt/bitnami/sqlite/lib/libsqlite3.so.0.8.6
これでsudo ldconfigして、sudo apachectl restartする。
おおー、コミットできたー。
という訳でSVN関連のライブラリパスがうまく設定されていないのが原因でした。
0 件のコメント:
コメントを投稿