subversion 1.4.2のインストール

subversion 1.4.2をインストールした時のメモを公開します。現時点ではSubversion 1.4.3が最新になりますので、以下のエントリは参考程度にして下さい。

注意事項

Apacherpmでインストールしたくない場合には、subversionは必ずsourceからインストールして下さい。

http 経由でのリポジトリへアクセスするためにmod_dav_svnモジュールをインストールする必要がありますが、Subversionrpmには含まれていません。またmod_dav_svnrpmパッケージがありますが、このパッケージは、Apache2のrpmのインストールが依存していますので注意して下さい。

インストール手順

大まかな流れは以下の通りになります。

  • 依存パッケージのインストール
  • ソースファイルのダウンロード
  • インストール
  • リポジトリの作成

またhttp経由でのリポジトリへのアクセスを行なう場合、以下の作業もあわせて必要になります。

依存パッケージのインストール

以下のパッケージが事前にインストールしてある必要があります。(aprapr-utilについてはApacheインストール時のコンパイルオプションによっては既にインストールされている可能性があります)

以下のいずれかの手順で依存パッケージをrpmにてインストールします。

  1. yumによるインストール(apr, apr-utilは既にインストールされている場合は不要です)
# yum install apr
# yum install apr-util
# yum install neon
# yum install neon-devel
  1. サイトからrpmファイルのダウンロード

以下のサイトからダウンロードします。(以下のサイトはRHEL4向けのパッケージです)

rpmコマンドにてインストールします。

rpm -ivh apr-0.9.12-2.i386.rpm
rpm -ivh apr-util-0.9.12-1.i386.rpm

Apache2.0もしくはApache2.2のインストール手順は以下を参照して下さい。(こちらで書かれているApacheのバージョンは最新版ではありませんので、最新版に読み替えて下さい)

コンパイルオプションがmod_davモジュールを有効にする必要があります。例) ./configure --enable-modules="so dav"

ソースファイルのダウンロード

公式サイトのダウンロードページからダウンロードします。

インストール

コンパイル時に、apxs, apr, apr-utiilへのパスを指定する必要があります。

$ ./configure --with-apxs=/usr/local/apache2/bin/apxs \
              --with-apr=/usr/local/apache2/bin/apr-1-config \
              --with-apr-util=/usr/local/apache2/bin/apu-1-config
$ make
# make install

リポジトリの作成

以下は、/work/svn/REPOSITORY/ 以下にtestプロジェクトのリポジトリを作成した例になります。実際の環境に置き換えて読んでください。

リポジトリのデータ保存形式として、Berkeley DB(BDB)もしくはFSFSが選択できますが、FSFSを選択しています。

# svnadmin create --fs-type fsfs /work/svn/REPOSITORY/test

BDBおよびFSFSについては以下を参照して下さい。

慣例に従って、trunk, tags, branchesを作成しています。

# svn mkdir file:///work/svn/REPOSITORY/test/trunk \
            file:///work/svn/REPOSITORY/test/tags \
            file:///work/svn/REPOSITORY/test/branches \
      -m "make trunk, tags, branches"

http経由でのリポジトリアクセス設定

http経由でリポジトリにアクセスできるように、mod_dav_svn, mod_authz_svnモジュールをロードするように、httpd.confに追記します。

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

次にsubversion用のhttpd設定ファイル(httpd-subversion.conf)を作成します。以下の例は、コミッタのみ書き込み権限を与え、それ以外のユーザには読み込み権限のみしか与えないようになっています。

# cat /usr/local/apache2/conf/extra/httpd-subversion.conf
# Subversion Repository
<Location /svn/repos>
        DAV svn
        SVNParentPath /work/svn/REPOSITORY

        AuthType Basic
        AuthName "Subversion Authentication Realm"
        AuthUserFile /work/svn/conf/svn.repos.passwd

        AuthGroupFile /work/svn/conf/svn.repos.group

        # Limit write permission to list of valid users.
        <LimitExcept GET PROPFIND OPTIONS REPORT>
                Require group svn_commiters
        </LimitExcept>

        <Limit GET PROPFIND OPTIONS REPORT>
                Require group svn_commiters
                Require group svn_readers
        </Limit>
</Location>

httpd-subversion.confを読み込むようにhttpd.confに以下を追記します。

Include conf/extra/httpd-subversion.conf

設定ファイルを格納するディレクトリを作成します。

# mkdir /work/svn/conf/

http経由でリポジトリへのアクセスを許可するユーザを指定します。(以下の例では、fooとbarを指定しています)

# /usr/local/apache2/bin/htpasswd -c /work/svn/conf/svn/repos.passwd foo
# /usr/local/apache2/bin/htpasswd /work/svn/conf/svn/repos.passwd bar

アクセス許可グループを定義します。

# cat svn.repos.group
svn_commiters: foo
svn_readers: bar

記述方法は以下を参照してください。

上記の設定後、Apacheを再起動します。

# /etc/init.d/apache2 configtest
# /etc/init.d/apache2 graceful

以下の点で問題がないか確認を行ないます。

  • アクセス権限のあるユーザでアクセスができ、設定した権限以上のことができないようになっているか?
  • アクセス権限のないユーザがアクセスできないようになっているか?

Subversionを利用してどのようなことができるか、そしてCVSとの違いを知りたい方は以下の書籍をオススメします。とても参考になります。

Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)
Mike Mason でびあんぐる
オーム社 (2007/04/21)
売り上げランキング: 5056