日本語ファイル名の利用とバージョン管理
次世代プロトコルWebDAVの可能性[後編]

宮本 久仁男<kmiya@coe.nttdata.co.jp>
NTTデータ COEシステム本部
システム技術開発部第三技術開発担当
2001/10/16

バージョン管理の実装「Subversion」

図7 mod_davとSubversion(Versioning Provider)の関係

 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の認証設定を<Location>ディレクティブの中で行えばよい。

 importも含め、svnのサブコマンドを表7にまとめておいた。参考になれば幸いである。

サブコマンド名
書式
機能
add add [TARGETS] 新しいファイルをバージョンコントロール対象に追加する
unadd unadd [TARGETS] ddを無効にする
co co REPOSPATH1 [REPOSPATH2 REPOSPATH3...] 指定したURLにあるリポジトリの内容を作業ディレクトリにチェックアウトする
ci ci [TARGETS] 作業ディレクトリの変更内容をリポジトリにコミットする
delete delete [TARGETS] 指定したファイルやディレクトリをバージョンコントロール対象から外す
undelete undelete [TARGETS] deleteを無効にする
help help [SUBCOMMAND1 [SUBCOMMAND2] ...] ヘルプメッセージを表示する。SUBCOMMAND1(,SUBCOMMAND2) と指定することで、指定コマンドのヘルプを出力する
import import REPOS_URL [PATH] [NEW_ENTRY_IN_REPOS] 指定したファイルもしくはディレクトリツリーをリポジトリにインポートする
proplist proplist [TARGETS] TARGETSで指定したファイルやディレクトリのプロパティ一覧を表示する
propget propget PROPNAME [TARGETS] TARGETSについて、PROPNAMEで指定した名前のプロパティの値を取得する
propset propset PROPNAME [PROPVAL | --valfile VALFILE] [TARGETS] TARGETSについて、PROPNAMEで指定した名前のプロパティに値PROPVAL(もしくはVALFILEに記述された値)を設定する
propdel propdel PROPNAME [TARGETS] TARGETSについて、PROPNAMEで指定した名前のプロパティを削除する
status status [TARGETS] TARGETSについて、作業用コピーファイルやディレクトリの状態を出力する
diff diff [TARGETS] TARGETSについて、ローカルファイルの変更点をdiff形式で出力する
update update [TARGETS] TARGETSについて、リポジトリから作業用のコピーに変更を反映する
cleanup cleanup [TARGETS] TARGETSについて、再帰的に作業用コピーのクリーンアップやロックの除去、そのほか終了していない操作などの後始末をする
revert revert [TARGETS] TARGETSについて、元の作業ファイルを復旧する(ローカルファイルに対するすべての操作をアンドゥする)
表7 TARGETSはローカルのファイル/ディレクトリ名、REPOSPATHはリポジトリを表すURLである

充実が期待できるWebDAV環境

 WebDAVの標準化は軌道に乗り始めたばかりであり、大きな標準化プロジェクトがいくつか走っている。DASLはリソースの検索に関して、ACLはリソースのアクセスコントロールに関して、DeltaVはバージョン管理についてそれぞれ標準化を行っている。それぞれのプロジェクトのページは、以下のとおりである。

  DASL: http://www.webdav.org/dasl/
  ACL: http://www.webdav.org/acl/
  DeltaV: http://www.webdav.org/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
3/3

Index
日本語ファイル名の利用とバージョン管理
− 次世代プロトコルWebDAVの可能性[後編] −
  Page 1
日本語ファイル名問題の解決
 mod_encodingのインストール
 mod_encoding利用時の注意
  Page 2
WebDAV運用の実際
 Webフォルダの利用と問題点
 davfsの利用によるマウント
 Sambaと組み合わせた利用と注意点
Page 3
バージョン管理の実装「Subversion」
 Subversionのインストール
 リポジトリの作成とApacheの設定
 Subversionの簡単な利用
 簡単な実行例
充実が期待できるWebDAV環境

参考資料

Linux Square全記事インデックス


 Linux Squareフォーラム WebDAV関連記事
特集:次世代プロトコルWebDAVの可能性[前編]
技術仕様徹底解説

将来、SambaやCVSを不要にする可能性を秘めた「WebDAV」。このプロトコルの仕様から実用化までを徹底解説。今回は、技術仕様を明らかにする
特集:次世代プロトコルWebDAVの可能性[中編]
WebDAVクライアント/サーバ環境の構築
WebDAVの実装はすでに存在する。LinuxによるWebDAVサーバの構築とクライアントの整備を行い、実際に使ってみよう
特集:次世代プロトコルWebDAVの可能性[後編]
日本語ファイル名の利用とバージョン管理
日本語ファイル名を扱えるようにするほか、WebDAVの「V」を司るバージョン管理機能を実現。WebDAV解説完結編!
特集:WebDAV時代のセキュリティ対策[前編]
WebDAVのメソッドは便利な反面、セキュリティホールとなり得る。しかし、適切な対策を講じることでメソッドの危険性は取り除くことができる
特集:WebDAV時代のセキュリティ対策[後編]
WebDAVの使用に際し、包括的な対策を行っておくのも重要である。何をどのように設定すればよいのかをここで明らかにする
特集:Apache 2.0でWebDAV
Apache 2.0の正式リリースでWebDAVも新たな段階に入った。一方で、1.3時代のmod_encodingがうまく機能しないという問題も浮上した
特集:Subversionによるバージョン管理
DeltaVがRFCとしてリリースされ、WebDAVのバージョン管理機能も足元か固まった。DeltaVの実装である「Subversion」を導入しよう
Linux Squareフォーラム全記事インデックス

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します

TechTargetジャパン

Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ



- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH