DeltaVと呼ばれていたバージョニング拡張がRFCとしてリリースされたことにより、WebDAVのバージョン管理機能もようやく足元か固まった。以前紹介したSubversionをApache 2.0+WebDAV環境に導入してみよう。
日本語ファイル名の利用とバージョン管理ではドラフトレベルだったWebDAVのバージョニング拡張(DeltaVと呼ばれていた)ですが、2002年3月にRFC 3253としてリリースされました(注)。
注:余談ですが、RFC 3251とRFC 3252が2002年4月1日のJoke RFCに割り当てられた番号です。
ざっと読んだ限り、最終ドラフトから大幅に変わった部分はありません。ただし、追加されたメソッドの数が多かったり既存メソッドの大幅な拡張を伴うということもあり、WebDAVの基本規約であるRFC 2518よりもボリュームが増しています。
今回紹介するのは、RFC 3253の基であるDeltaVの実装の1つ、「Subversion」です。
DeltaVがRFC 3253としてリリースされ、Apache 2.0が正式リリースされた前後にSubversionの方にも変化がありました。「Version 1.0」という文字列がProject homeページ(http://subversion.tigris.org/)に見えるようになり、スナップショットのtarボールも「pre-alpha」という別名が付いています。
Subversion 1.0では、
をはじめとする多くの機能が実現されるとのことですが、現在はpre-alphaなので今後の動向に注目したいところです。
以前、日本語ファイル名の利用とバージョン管理で紹介したSubversionは、マイルストーン3、リリース番号88という非常に初期のものでした。原稿執筆時点では、Subversionのリリース番号は2000を超えています。
これから、pre-alphaと名の付いたSubversion(バージョン0.13.1、リリース2291)を使用するための手順と、クライアントの利用方法を紹介します。
Subversionは、mod_dav_fsと同じ部分に位置するバックエンドモジュール(mod_dav_svn)です(編注)。もう少し専門的ないい方をするのであれば、バージョニング機能を提供するものという意味で「バージョニングプロバイダ」と呼ばれます。mod_dav_fsとの関係を図1に示します。
mod_davで受け付けた各種リクエストを、バージョニングプロバイダに受け渡ししてるわけです。
編注:mod_dav_fsや「バックエンドモジュール」などについては、Apache 2.0でWebDAVを参照。
Subversionは、リポジトリの格納に「Berkeley DB 4.0」を使用します。従って、Berkeley DB 4.0をインストールしておく必要があります。実は、ApacheもBerkeley DB 4.0を使うようにしておく必要があります。これについては、詳しい手順とその理由を後述します。
Sleepycat Software(http://www.sleepycat.com/)のWebページのダウンロードメニューからdb-4.0.14.tar.gzというアーカイブをダウンロードします。後述しますが、SubversionではDBライブラリのバージョンをチェックします。古いバージョンのDBライブラリでは動作しない点に注意してください。
configure && make && make installを実施しますが、これらの作業はすべてdistというサブディレクトリの下で行います。従って、アーカイブ展開後に作成されるディレクトリのさらに下のdistディレクトリに移動して作業する必要があります。
$ gzip -dc | tar xvf db-4.0.14.tar.gz $ cd ./db-4.0.14/dist $ ./configure $ make $ su root # make install
ここまでの作業で、/usr/local/BerkeleyDB.4.0というディレクトリ下にコマンド/ヘッダ/ライブラリのたぐいがインストールされます。ライブラリとヘッダがインストールされた様子を以下に示します。
$ ls -l /usr/local/BerkeleyDB.4.0/ 合計 16 drwxr-xr-x 2 root root 4096 6月 24 17:12 bin drwxr-xr-x 10 root root 4096 6月 24 17:12 docs drwxr-xr-x 2 root root 4096 6月 24 17:12 include drwxr-xr-x 2 root root 4096 6月 24 17:12 lib $ ls -l /usr/local/BerkeleyDB.4.0/lib/ 合計 1356 -r--r--r-- 1 root root 771346 6月 24 17:12 libdb-4.0.a -r--r--r-- 1 root root 724 6月 24 17:12 libdb-4.0.la -r--r--r-- 1 root root 599294 6月 24 17:12 libdb-4.0.so lrwxrwxrwx 1 root root 12 6月 24 17:12 libdb-4.so -> libdb-4.0.so lrwxrwxrwx 1 root root 11 6月 24 17:12 libdb.a -> libdb-4.0.a lrwxrwxrwx 1 root root 12 6月 24 17:12 libdb.so -> libdb-4.0.so $ ls -l /usr/local/BerkeleyDB.4.0/include/ 合計 104 -r--r--r-- 1 wakatono wakatono 1209 4月 29 2001 cxx_common.h -r--r--r-- 1 wakatono wakatono 2129 5月 9 2001 cxx_except.h -r--r--r-- 1 wakatono wakatono 67730 6月 23 01:06 db.h -r--r--r-- 1 wakatono wakatono 22196 6月 23 01:06 db_cxx.h
ここまででインストールしたライブラリは、通常は標準でld.soが検索するライブラリパスには入っていません。従って、
などとして、新規インストールしたライブラリ群をダイナミックリンカに見つけてもらうようにする必要があります。
Apache 2.0でWebDAVの記事中で、Apache 2.0のconfigure && makeについて解説しました。ただし、Subversionを使うにはApache 2.0が使用するBerkeley DBライブラリを新しいものにする必要があります。すなわち、インストールしたDBライブラリのツリーをconfigureのDB指定に追加して、Apache 2.0をインストールし直すのです。configureのコマンドラインは、
$ ./configure --enable-so=yes \ --enable-dav=yes \ --with-berkeley-db=/usr/local/BerkeleyDB.4.0
という感じになります。もちろん、
$ ./configure --enable-module=most \ --enable-shared=max \ --enable-dav=yes \ --with-berkeley-db=/usr/local/BerkeleyDB.4.0
としてモジュールを最大限にインストールするような形でも構いません。結果として、Apache 2.0の実行ファイルが新しいDBライブラリを参照してくれるようになっていれば問題ありません。筆者の環境では、
$ ldd /usr/local/apache2/bin/httpd libgdbm.so.2 => /usr/lib/libgdbm.so.2 (0x4002b000) libdb-4.0.so => /usr/local/BerkeleyDB.4.0/lib/libdb-4.0.so (0x40032000) libexpat.so.0 => /usr/lib/libexpat.so.0 (0x400b7000) libm.so.6 => /lib/i686/libm.so.6 (0x400d6000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x400f8000) libnsl.so.1 => /lib/libnsl.so.1 (0x40125000) libdl.so.2 => /lib/libdl.so.2 (0x4013a000) libpthread.so.0 => /lib/i686/libpthread.so.0 (0x4013e000) libc.so.6 => /lib/i686/libc.so.6 (0x42000000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
というような形で、lddの実行結果中に現れるDBライブラリがlibdb-4.0.soとなっています。
Copyright © ITmedia, Inc. All Rights Reserved.