日本語ファイル名の利用とバージョン管理:次世代プロトコルWebDAVの可能性(3)(3/3 ページ)
中編でWebDAV環境を構築したが、このままでは日本語ファイル/フォルダ名が使えないなど、多少問題がある。そこで、この問題を解決しつつ、さらにWebDAVを活用するための運用方法を模索する。
バージョン管理の実装「Subversion」
RFC 2518では、WebDAVプロトコルの「Authoring」のみが規定されている。WebDAVの「V」の部分であるVersioningについては、現在DeltaVプロジェクトが出しているInternet Draftがあるのみだが、これとは別にWebDAVのVersioningの実装がリリースされている。それがSubversion(http://subversion.tigris.org/)である。
Subversionは、mod_davのバックエンドとして動作するバージョン管理エンジン(Versioning Provider)である。図7にmod_davとSubversionの関係を示す。
Subversion自身のバージョンは、現時点ではPre-Alphaというものであるが、tarアーカイブとして取得が可能になっている。プロトコル的にDeltaVを知ることは大事であるが、使える実装があるということ、そしてそれを利用できることも重要である。
なお、SubversionはVersioningプロトコルとしてはDeltaVの仕様をサポートしている。また、2001年10月1日にhttp://www.webdav.org/で公開されたアナウンスによると、DeltaVのステータスはIETFのProposed Standardになったとのことである。
Subversionのインストール
1.インストールの前提条件
Subversionをインストールするには、以下の条件を満たす必要がある。
CVSスナップショットから取得可能なApache 2.0がDSO利用可能な状態でインストールされていること
理由は以下のとおりである。
- Apache 2.0.18 alphaまでの実装では、Subversionはコンパイルできない
- Subversionの実装は、Apacheの実装に依存している
- Apacheの実装により、APIが一部変更になることがある
なお、筆者は以下のスナップショットを利用した(注)。
apr-util_20010915041912.tar.gz
apr_20010915041901.tar.gz
httpd-2.0_20010915041212.tar.gz
注:なお、Subversionについても同時期にリリースされたアーカイブを利用している。
Subversionを利用するうえで注意してほしいのは、これはあくまで開発版であり、インストールしたから使えるという保証はどこにもないことである。また、既存の環境に影響を及ぼさないとも限らないため、これらの作業を行うマシンは環境が壊れても問題ないものであることが望ましい。
2.アーカイブの入手
まず、http://subversion.tigris.org/よりSubversionのソースコードを入手する。筆者はsubversion-M3-r88.tar.gzを入手した(注)。ちなみに、Subversionの最新スナップショットを入手する方法として、Subversionのクライアントを作成し、それを用いることもできる。
注:subversion-M3-r202.tar.gzというアーカイブもあるが、こちらを使うとリポジトリ操作が妙に遅いという問題がある。
また、サーバモジュールのコンパイルにはBerkeley DBの最新版(2001年9月15日時点で3.3.11が最新)が必須である。筆者は、http://www.sleepycat.com/からdb-3.3.11.tar.gzを入手した。
3.アーカイブの展開からインストールまで
まずsubversion-M3-r88.tar.gzを展開し、作成されたディレクトリの直下にdb-3.3.11.tar.gzを展開する(注)。
注:手順は、アーカイブを展開すると生成されるnotes/dav_setup.txtというファイルに記述があるので参考にしてほしい。
その後、
$ mv db-3.3.11 db $ configure $ make # make install
と実行する。また、/etc/ld.so.confにdb-3.3.11のライブラリが格納されている場所を追加して、
# ldconfig
を実行しておくと後々ラクである。逆にいうと、これを実施しておかないとSubversionのモジュールを追加したApacheの実行時に、Berkeley DBの共有ライブラリが見つからないというエラーが出る。
リポジトリの作成とApacheの設定
インストールが終わったらとりあえず実行……といきたいところだが、実行に当たっては以下の準備が必要となる。
1.リポジトリの用意
バージョン管理を行うためのリポジトリの用意は、Subversionをインストールしたコンピュータ上で実施する。
$ svnadmin create /home/svn/sample
とすることで、/home/svn/sampleディレクトリ下にファイル/ディレクトリ構造が準備される。
/home/svn/sampleディレクトリ下は、以下のようなディレクトリ構造が生成されている。なお、これらのファイルはApacheのuserディレクティブで指定されたユーザー/グループの権限になるので、このディレクトリ配下を当該ユーザーで操作できるように設定しておく必要がある。
# ls -R /home/svn/sample /home/svn/sample: README conf/ dav/ db/ hooks/ locks/ /home/svn/sample/conf: /home/svn/sample/dav: /home/svn/sample/db: __db.001 __db.003 __db.005 nodes revisions transactions __db.002 __db.004 log.0000000001 representations strings /home/svn/sample/hooks: post-commit.tmpl read-sentinels.tmpl write-sentinels.tmpl pre-commit.tmpl start-commit.tmpl /home/svn/sample/locks: db.lock
2.Apacheの設定
make installを実行した時点で、httpd.confには
LoadModule dav_svn_module modules/libmod_dav_svn.so
という行が追加されていることと思うが、さらにhttpd.confの一番下(ドキュメントにはこう記述がある)に、以下のような記述を追加する。
<Location /svn/repos> DAV svn SVNPath /home/svn/sample ←リポジトリの格納場所 </Location>
3.Apacheの起動と動作確認
ここまできたら、普通にApacheを起動する。これで、Subversionが利用できるようになる。
ちゃんと機能が利用できるかを確認するには、OPTIONSコマンドを発行するのが手っ取り早い。結果として、以下のような行が出力されれば問題ない。
$ telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. OPTIONS /sample HTTP/1.1 Host: localhost HTTP/1.1 200 OK Date: Wed, 10 Oct 2001 06:05:19 GMT Server: Apache/2.0.26-dev (Unix) DAV/2 SVN/M3 DAV: 1 DAV: version-control,checkout,version-history,working-resource DAV: merge,baseline,activity,version-controlled-collection DAV: <http://apache.org/dav/propset/fs/1> MS-Author-Via: DAV Allow: OPTIONS,GET,HEAD,POST,DELETE,TRACE,PROPFIND,PROPPATCH,COPY,MOVE Content-Length: 0 Content-Type: text/plain; charset=ISO-8859-1
Subversionの簡単な利用
インストールも困難だが、実は利用するのも一苦労である(注)。理由は簡単、ドキュメントがあまりそろっていないのである。主要なコマンドのリファレンスは、コマンド実行時のヘルプくらいしかないというのが現状である。
注:実は、筆者もかなりハマった。コンパイルだけでなく、使い方が分かるまでにもかなりの時間を費やした状態である。
Subversionのインストールによって作成される実行プログラムは、主に以下の3つである。それぞれどこで実行するか、どのような機能を持つかを示しておくので参考にしてほしい。
svnadmin
用途: リポジトリの新規作成および管理
実行場所:リポジトリを作成する(もしくは存在する)コンピュータ上で実行
例: svnadmin create /home/svn/sample
svn
用途: リポジトリの操作
実行場所:クライアント上で実行
例: svn import http://localhost/svn/repos ./sample
svnlook
用途: リポジトリを見る
実行場所:リポジトリを作成したコンピュータ上で実行
例: svnlook /home/svn/sample
また、リポジトリに含まれるコンテンツ一覧を見たりするだけならば普通のWebDAVクライアント(例えばWindowsのWebフォルダ)が使える(PROPFINDメソッドを使用)。内容を取得するのであれば普通のWebブラウザを用いることで実現できる(GETメソッドを使用)。
簡単な実行例
最後に、Subversionの実行例を挙げる。リポジトリにコンテンツをインポート(import)する場合、
$ svn import http://localhost/svn/repos . Username: ←何も入力せずに[Enter]キー Password: ←何も入力せずに[Enter]キー Adding ./blocksort.c Adding ./huffman.c Adding ./crctable.c Adding ./randtable.c (中略) Adding (bin) ./sample2.rb2 Adding (bin) ./sample3.rb2 Adding (bin) ./sample1.tst Adding (bin) ./sample2.tst Adding ./sample3.tst Commit succeeded.
上記の実行例ではユーザー認証を設定していないため、ユーザー名もパスワードも入力していない。ユーザー認証を有効にしたい場合は、通常のApacheの認証設定を
importも含め、svnのサブコマンドを表7にまとめておいた。参考になれば幸いである。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
充実が期待できるWebDAV環境
WebDAVの標準化は軌道に乗り始めたばかりであり、大きな標準化プロジェクトがいくつか走っている。DASLはリソースの検索に関して、ACLはリソースのアクセスコントロールに関して、DeltaVはバージョン管理についてそれぞれ標準化を行っている。それぞれのプロジェクトのページは、以下のとおりである。
参考資料
最後に、もっとWebDAVについて知りたいという方のために、参考となるURLや資料を挙げておく(一部再掲)。
- RFC 2291
ftp://ftp.nic.ad.jp/rfc/rfc2291.txt
Requirements for a Distributed Authoring and Versioning Protocol for the World Wide Web - RFC 2518
ftp://ftp.nic.ad.jp/rfc/rfc2518.txt
HTTP Extensions for Distributed Authoring -- WEBDAV - WebDAV Resources
http://www.webdav.org/
WebDAV に関する情報が集約されている - IETF WEBDAV Working Group
http://www.ics.uci.edu/pub/ietf/webdav/
IETFのWebDAV WGのページ - DASL
http://www.webdav.org/dasl/ - ACL
http://www.webdav.org/acl/ - DeltaV
http://www.webdav.org/deltav/ - Subversion
http://subversion.tigris.org/ - mod_encoding.c
http://www.lyra.org/pipermail/dav-dev/2001-May/002428.html - Microsoft 「WebDAVの発行」
http://www.microsoft.com/JAPAN/developer/library/jpiis/core/wcwbdav.htm - 「FTPとDAVで作るファイル公開システム」
UNIX USER 2001年10月号 - WebDAV入門
1600円+税、ジャストシステム出版部 ISBN4-88309-220-8
Copyright © ITmedia, Inc. All Rights Reserved.