【2/17】今年は「濃厚」技術トーク!@ITメールセミナー スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷

Subversionによるバージョン管理
Apache 2.0でWebDAV(後編)

DeltaVと呼ばれていたバージョニング拡張がRFCとしてリリースされたことにより、WebDAVのバージョン管理機能もようやく足元か固まった。以前紹介したSubversionをApache 2.0+WebDAV環境に導入してみよう。

宮本 久仁男<miyamotokn@nttdata.co.jp>
NTTデータ システム開発事業本部
基盤システム事業部 第一ソリューション技術担当
2002/7/13

WebDAVのバージョニング拡張

 日本語ファイル名の利用とバージョン管理ではドラフトレベルだったWebDAVのバージョニング拡張(DeltaVと呼ばれていた)ですが、2002年3月にRFC 3253としてリリースされました()。

注:余談ですが、RFC 3251とRFC 3252が2002年4月1日のJoke RFCに割り当てられた番号です。
・RFC 3251:ftp://ftp.nic.ad.jp/rfc/rfc3251.txt
・RFC 3252:ftp://ftp.nic.ad.jp/rfc/rfc3252.txt

 ざっと読んだ限り、最終ドラフトから大幅に変わった部分はありません。ただし、追加されたメソッドの数が多かったり既存メソッドの大幅な拡張を伴うということもあり、WebDAVの基本規約であるRFC 2518よりもボリュームが増しています。

 今回紹介するのは、RFC 3253の基であるDeltaVの実装の1つ、「Subversion」です。

Subversion

 DeltaVがRFC 3253としてリリースされ、Apache 2.0が正式リリースされた前後にSubversionの方にも変化がありました。「Version 1.0」という文字列がProject homeページ(http://subversion.tigris.org/)に見えるようになり、スナップショットのtarボールも「pre-alpha」という別名が付いています。

 Subversion 1.0では、

  • CVSが持つ機能の実現
  • ディレクトリ、リネーム、ファイルのメタデータなどのバージョン管理
  • バイナリの効率的な取り扱い

をはじめとする多くの機能が実現されるとのことですが、現在はpre-alphaなので今後の動向に注目したいところです。

 以前、日本語ファイル名の利用とバージョン管理で紹介したSubversionは、マイルストーン3、リリース番号88という非常に初期のものでした。原稿執筆時点では、Subversionのリリース番号は2000を超えています。

 これから、pre-alphaと名の付いたSubversion(バージョン0.13.1、リリース2291)を使用するための手順と、クライアントの利用方法を紹介します。

Subversionの実体

 Subversionは、mod_dav_fsと同じ部分に位置するバックエンドモジュール(mod_dav_svn)です(編注)。もう少し専門的ないい方をするのであれば、バージョニング機能を提供するものという意味で「バージョニングプロバイダ」と呼ばれます。mod_dav_fsとの関係を図1に示します。

図1 WebDAVとSubversion(mod_dav_svn)の関係

 mod_davで受け付けた各種リクエストを、バージョニングプロバイダに受け渡ししてるわけです。

編注:mod_dav_fsや「バックエンドモジュール」などについては、Apache 2.0でWebDAVを参照。

Subversionコンパイル前の準備

 Subversionは、リポジトリの格納に「Berkeley DB 4.0」を使用します。従って、Berkeley DB 4.0をインストールしておく必要があります。実は、ApacheもBerkeley DB 4.0を使うようにしておく必要があります。これについては、詳しい手順とその理由を後述します。

Berkeley DBの入手とインストール

 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が検索するライブラリパスには入っていません。従って、

  • /etc/ld.so.confなどを編集し、/usr/local/BerkeleyDB.4.0/libを追加する
  • /sbin/ldconfigを実行する

などとして、新規インストールしたライブラリ群をダイナミックリンカに見つけてもらうようにする必要があります。

Berkeley DBをリンクしたApache 2.0のインストール

 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となっています。

前編へ
1/3

Index
Subversionによるバージョン管理
 Apache 2.0でWebDAV(後編)
Page 1
WebDAVのバージョニング拡張
 Subversion
 Subversionの実体
Subversionコンパイル前の準備
 Berkeley DBの入手とインストール
 ダイナミックリンカの検索パス追加
 Berkeley DBをリンクしたApache 2.0のインストール
  Page 2
Subversionのコンパイル&インストール
 Subversionのアーカイブ入手と展開
 configureとmake
 Subversionのインストール
 リポジトリのエントリ追加と作成
 httpdの起動と試験
Subversionのインストールトラブルシューティング

 httpdが参照しているDBライブラリが古い
 libsvn_*で参照しているDBライブラリがまちまち
  Page 3
Subversionの利用
 簡単なSubversionの使用例
Version 1.0を控えて
 参考資料

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フィード

スキルアップ/キャリアアップ(JOB@IT)



- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  企業の仮想化に足りない“発想”とは?
仮想化運用管理のキモは意外なところに!

New!
  操作もマニュアルも分かりやすい!
ユーザー視点で開発されたPC管理ツール

New!
  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  セキュリティを知り尽くす上野氏が登壇!
@ITメールソリューションLive! in Tokyo

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  世界に通用するストレージの作り方とは?
製品に込めた思いを富士通の開発者に聞く

  OSSで手間も時間も、障害も減った――
「マピオンの事例」オープンソース活用法

  「ノートPCの持ち出し禁止」で大丈夫?
情報漏えいを防ぐ管理手法とインフラは?

  1日の処理を1秒に――MySQLの達人が語る
「コスト削減」できるチューニング

  ドキュメント作成を自動化して、SEの作業
効率を大幅アップ! Visio 2007の魅力

  急速に広がるHyper-Vでのサーバ仮想化
そのベストプラクティスをデルが解説

  @IT主催セミナーで語られた、「担当者に
求められるセキュリティ対策」をレポート

  @IT「Windows 7」 特設サイトオープン!
最新情報・移行ノウハウを公開しています