#topicpath
----
Subversion 1.4.3 をインストールしてみました。

古いバージョンなのはそういう事情があったからです(笑)

#contents

* 環境 [#db6419d3]

- Sun Ultra80
- Solaris 10 (10/09)

* 必要なパッケージのダウンロード [#yc1cb2ef]

http://www.sunfreeware.com/ からダウンロードしてきました。

#pre{{
bash-3.00# ftp ftp.sunfreeware.com
Connected to ftp.sunfreeware.com.
220 ftp.sunfreeware.com FTP server ready.
Name (ftp.sunfreeware.com:sugimura): anonymous
331 Guest login ok, send your complete e-mail address as password.
Password:
230-
230-==============================================
230-This is the ftp.sunfreeware.com ftp server
230-
...
ftp> cd /pub/freeware/sparc/10/
250 CWD command successful.
ftp> bin
200 Type set to I.
ftp> mget subversion-1.4.3*
mget subversion-1.4.3-sol10-sparc-local.gz? y
...
}}

subversion 以外にも、依存するパッケージをすべて持ってきます。
持ってくるものは
http://www.sunfreeware.com/subversion.html を参考にします。

#pre{{
bash-3.00# ls
apache-2.0.59-sol10-sparc-local.gz     libxml2-2.6.31-sol10-sparc-local.gz
db-4.2.52.NC-sol10-sparc-local.gz      neon-0.25.5-sol10-sparc-local.gz
expat-2.0.1-sol10-sparc-local.gz       openssl-1.0.0-sol10-sparc-local.gz
gdbm-1.8.3-sol10-sparc-local.gz        subversion-1.4.3-sol10-sparc-local.gz
libgcc-3.4.6-sol10-sparc-local.gz      swig-1.3.36-sol10-sparc-local.gz
libiconv-1.13.1-sol10-sparc-local.gz   zlib-1.2.4-sol10-sparc-local.gz
}}

* インストール [#f34d2c09]

gzip をほどいて、pkgadd でインストールしていきます。

#pre{{
bash-3.00# for i in *.gz
> do
> gunzip $i
> done
bash-3.00# 
bash-3.00# ls
apache-2.0.59-sol10-sparc-local     libxml2-2.6.31-sol10-sparc-local
db-4.2.52.NC-sol10-sparc-local      neon-0.25.5-sol10-sparc-local
expat-2.0.1-sol10-sparc-local       openssl-1.0.0-sol10-sparc-local
gdbm-1.8.3-sol10-sparc-local        subversion-1.4.3-sol10-sparc-local
libgcc-3.4.6-sol10-sparc-local      swig-1.3.36-sol10-sparc-local
libiconv-1.13.1-sol10-sparc-local   zlib-1.2.4-sol10-sparc-local
}}

#pre{{
bash-3.00# pkgadd -d apache-2.0.59-sol10-sparc-local 


The following packages are available:
  1  SMCap2059     apache
                   (sparc) 2.0.59

Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: 

Processing package instance <SMCap2059> from </tmp/download/apache-2.0.59-sol10-
sparc-local>

apache(sparc) 2.0.59
The Apache Group

The selected base directory </usr/local/apache2> must exist before
installation is attempted.

Do you want this directory created now [y,n,?,q] y
Using </usr/local/apache2> as the package base directory.
## Processing package information.
## Processing system information.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.

Installing apache as <SMCap2059>

## Installing part 1 of 1.
/usr/local/apache2/bin/ab
/usr/local/apache2/bin/apachectl
...
}}

全部終わったらちゃんと入ったことを確認します。

#pre{{
bash-3.00# pkginfo | grep SMC
application SMCap2059                        apache
application SMCdb                            db
application SMCexpat                         expat
application SMCgdbm                          gdbm
application SMClgcc346                       libgcc
application SMCliconv                        libiconv
application SMClxml2                         libxml2
application SMCneon                          neon
application SMCossl                          openssl
application SMCsubv143                       subversion
application SMCswig                          swig
application SMCzlib                          zlib
system      SUNWjmgts                        Japanese Trusted Extensions, SMC
system      SUNWmgts                         Trusted Extensions, SMC
application SUNWtsmc                         Trusted Extensions SMC Server
}}

この "application SMCxxxxx" というのが今回インストールしたもので、
ダウンロードしてきた12個と合っていることを確認します。

svn コマンドもちゃんと使えることを確認します。

#pre{{
bash-3.00# ldd /usr/local/bin/svn
        libsvn_client-1.so.0 =>  /usr/local/lib/libsvn_client-1.so.0
        libsvn_wc-1.so.0 =>      /usr/local/lib/libsvn_wc-1.so.0
        libsvn_ra-1.so.0 =>      /usr/local/lib/libsvn_ra-1.so.0
        libsvn_diff-1.so.0 =>    /usr/local/lib/libsvn_diff-1.so.0
        libsvn_ra_local-1.so.0 =>        /usr/local/lib/libsvn_ra_local-1.so.0
        libsvn_repos-1.so.0 =>   /usr/local/lib/libsvn_repos-1.so.0
        libsvn_fs-1.so.0 =>      /usr/local/lib/libsvn_fs-1.so.0
        libsvn_fs_fs-1.so.0 =>   /usr/local/lib/libsvn_fs_fs-1.so.0
        libsvn_fs_base-1.so.0 =>         /usr/local/lib/libsvn_fs_base-1.so.0
        libsvn_ra_svn-1.so.0 =>  /usr/local/lib/libsvn_ra_svn-1.so.0
        libsvn_ra_dav-1.so.0 =>  /usr/local/lib/libsvn_ra_dav-1.so.0
        libsvn_delta-1.so.0 =>   /usr/local/lib/libsvn_delta-1.so.0
        libsvn_subr-1.so.0 =>    /usr/local/lib/libsvn_subr-1.so.0
        libaprutil-0.so.0 =>     /usr/local/lib/libaprutil-0.so.0
        libdb-4.2.so =>  /usr/local/BerkeleyDB.4.2/lib/libdb-4.2.so
        libiconv.so.2 =>         /usr/local/lib/libiconv.so.2
        libapr-0.so.0 =>         /usr/local/lib/libapr-0.so.0
        libsendfile.so.1 =>      /usr/lib/libsendfile.so.1
        librt.so.1 =>    /usr/lib/librt.so.1
        libm.so.2 =>     /usr/lib/libm.so.2
        libresolv.so.2 =>        /usr/lib/libresolv.so.2
        libpthread.so.1 =>       /usr/lib/libpthread.so.1
        libneon.so.25 =>         /usr/local/lib/libneon.so.25
        libssl.so.0.9.8 =>       /usr/local/ssl/lib/libssl.so.0.9.8
        libcrypto.so.0.9.8 =>    /usr/local/ssl/lib/libcrypto.so.0.9.8
        libnsl.so.1 =>   /usr/lib/libnsl.so.1
        libexpat.so.0 =>         /usr/local/lib/libexpat.so.0
        libsocket.so.1 =>        /usr/lib/libsocket.so.1
        libz.so =>       /usr/local/lib/libz.so
        libc.so.1 =>     /usr/lib/libc.so.1
        libgcc_s.so.1 =>         /usr/local/lib/libgcc_s.so.1
        libaio.so.1 =>   /lib/libaio.so.1
        libmd.so.1 =>    /lib/libmd.so.1
        libdl.so.1 =>    /lib/libdl.so.1
        libmp.so.2 =>    /lib/libmp.so.2
        libscf.so.1 =>   /lib/libscf.so.1
        libdoor.so.1 =>  /lib/libdoor.so.1
        libuutil.so.1 =>         /lib/libuutil.so.1
        libgen.so.1 =>   /lib/libgen.so.1
        /platform/SUNW,Ultra-80/lib/libc_psr.so.1
        /platform/SUNW,Ultra-80/lib/libmd_psr.so.1
bash-3.00# 
}}

#pre{{
bash-3.00# /usr/local/bin/svn --version
svn, version 1.4.3 (r23084)
   compiled Feb 13 2007, 01:05:57

Copyright (C) 2000-2006 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository access (RA) modules are available:

* ra_dav : Module for accessing a repository via WebDAV (DeltaV) protocol.
  - handles 'http' scheme
  - handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
  - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' scheme

bash-3.00# 
}}

* リポジトリの作成 [#t5847a80]

/u01/svnrepo に作成しました。webservd ユーザの権限にしておきます。

#pre{{
bash-3.00# mkdir -p /u01/svnrepo
bash-3.00# cd /u01/svnrepo
bash-3.00# /usr/local/bin/svnadmin create myrepo
bash-3.00# chown -R webservd:webservd /u01/svnrepo 
}}

ちゃんと出来たかどうかを確認します。

#pre{{
bash-3.00# /usr/local/bin/svnadmin verify /u01/svnrepo/myrepo 
* Verified revision 0.
}}

* Apache の設定 [#z62be5d3]

httpd-std.conf をひな形にして、httpd.conf を作ります。

#pre{{
bash-3.00# cd /usr/local/apache2/conf
bash-3.00# cp httpd-std.conf httpd.conf 
}}

httpd.conf から User と Group の行を探して、
ユーザとグループを設定します。
両方とも webservd にしました。

#pre{{
# User/Group: The name (or #number) of the user/group to run httpd as.
#  . On SCO (ODT 3) use "User nouser" and "Group nogroup".
#  . On HPUX you may not be able to use shared memory as nobody, and the
#    suggested workaround is to create a user www and use that user.
#  NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET)
#  when the value of (unsigned)Group is above 60000;
#  don't use Group #-1 on these systems!
#
#User nobody
#Group #-1
User webservd
Group webservd
}}

Subversion の設定は httpd.conf の中に書いてもいいのですが、
設定を容易にするために外出しにしておきます。

/usr/local/apache2/conf/httpd.conf の末尾に Include を書きます。

#pre{{
#Subversion settings
Include conf/httpd-subversion.conf
}}

/usr/local/apache2/conf/httpd-subversion.conf を編集します。

- http://localhost/svnrepo/ でアクセス
- リポジトリは /u01/svnrepo/ 以下
- パスワードファイルは /usr/local/apache2/conf/svn-htpasswd
- 読み書きにアクセス権限が必要

としています。

#pre{{
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

<Location /svnrepo>
   DAV svn
   SVNParentPath /u01/svnrepo/

   AuthType Basic
   AuthName "Authorization Realm"
   AuthUserFile /usr/local/apache2/conf/svn-htpasswd
   Require valid-user
</Location>
}}

なお、アクセス制限を書き込みのみに制限することもできます。LimitExcept で除外します。

#pre{{
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

<Location /svnrepo>
   DAV svn
   SVNParentPath /u01/svnrepo/

   # Limit write permission to list of valid users.
   <LimitExcept GET PROPFIND OPTIONS REPORT>
     AuthType Basic
     AuthName "Authorization Realm"
     AuthUserFile /usr/local/apache2/conf/svn-htpasswd
     Require valid-user
   </LimitExcept>
</Location>
}}

この設定が正しいことを確認します。
今回は上の読み書き両方に制限を掛けるほうを使いました。

#pre{{
bash-3.00# /usr/local/apache2/bin/apachectl configtest
Syntax OK
}}

Apache を起動してみます。

#pre{{
bash-3.00# svcadm disable http
bash-3.00# svcadm enable http
bash-3.00# svcs -p http
STATE          STIME    FMRI
maintenance    17:17:01 svc:/network/http:apache2
}}

maintenance になってしまいました。
状況を確認してみます。

#pre{{
bash-3.00# svcs -xv
svc:/network/http:apache2 (Apache 2 HTTP server)
 State: maintenance since Tue Apr 06 17:17:01 2010
Reason: Start method exited with $SMF_EXIT_ERR_CONFIG.
   See: http://sun.com/msg/SMF-8000-KS
   See: man -M /usr/apache2/man -s 8 httpd
   See: /var/svc/log/network-http:apache2.log
Impact: This service is not running.
}}

というわけで起動スクリプトを確認します。
/lib/svc/method-apache2 の下記の点を直しました。
/lib/svc/method/http-apache2 の下記の点を直しました。

#pre{{
#APACHE_HOME=/usr/apache2
#CONF_FILE=/etc/apache2/httpd.conf
APACHE_HOME=/usr/local/apache2
CONF_FILE=/usr/local/apache2/conf/httpd.conf
}}

また起動してみます。

#pre{{
bash-3.00# svcadm disable http
bash-3.00# svcadm enable http
bash-3.00# svcs -p http
STATE          STIME    FMRI
online         17:23:18 svc:/network/http:apache2
               17:23:18     2120 httpd
               17:23:19     2121 httpd
               17:23:19     2122 httpd
               17:23:19     2123 httpd
               17:23:19     2124 httpd
               17:23:19     2125 httpd
bash-3.00# svcs -xv
bash-3.00# 
}}

今度は正しく上がってきました。

* Subversion のユーザ設定 [#bd28701f]

ユーザを設定します。
/usr/local/apache2/conf/svn-htpasswd が上で設定したパスワードファイルです。

#pre{{
bash-3.00# /usr/local/apache2/bin/htpasswd -c /usr/local/apache2/conf/svn-htpasswd sugimura
New password: 
Re-type new password: 
Adding password for user sugimura
bash-3.00# 
}}

この後ユーザを追加していくときは -c は不要です。

* クライアントユーザから Subversion を使う [#y7733583]

ここまで用意すれば、sugimura ユーザで Subversion を使うことができます。

別マシンからアクセスしてみました。

- クライアント 192.168.1.2
-- Gentoo Linux, Subversion 1.6.9
- Subversionサーバ (今回構築したもの) 192.168.1.4
-- Solaris10, Subversion 1.4.3

#pre{{
sugimura@e8400 ~/tmp $ svn checkout http://192.168.1.4/svnrepo/myrepo
認証領域: <http://192.168.1.4:80> Authorization Realm
'sugimura' のパスワード: 

-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

   <http://192.168.1.4:80> Authorization Realm

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/home/sugimura/.subversion/servers'.
-----------------------------------------------------------------------
暗号化されていないパスワードを保存しますか (yes/no)? no 
リビジョン 0 をチェックアウトしました。
}}

ファイルを作って commit までしてみます。

#pre{{
sugimura@e8400 ~/tmp $ cd myrepo/
sugimura@e8400 ~/tmp/myrepo $ ls
sugimura@e8400 ~/tmp/myrepo $ touch subversion_sample.txt
sugimura@e8400 ~/tmp/myrepo $ svn add subversion_sample.txt 
A         subversion_sample.txt
sugimura@e8400 ~/tmp/myrepo $ svn commit -m "first commit" subversion_sample.txt 
認証領域: <http://192.168.1.4:80> Authorization Realm
'sugimura' のパスワード: 

-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

   <http://192.168.1.4:80> Authorization Realm

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/home/sugimura/.subversion/servers'.
-----------------------------------------------------------------------
暗号化されていないパスワードを保存しますか (yes/no)? no
追加しています              subversion_sample.txt
ファイルのデータを送信しています .
リビジョン 1 をコミットしました。
sugimura@e8400 ~/tmp/myrepo $ 
}}

192.168.1.4 でも sugimura ユーザでアクセスしてみます。

#pre{{
-bash-3.00$ /usr/local/bin/svn checkout http://localhost/svnrepo/myrepo
Authentication realm: <http://localhost:80> Authorization Realm
Password for 'sugimura': 
A    myrepo/subversion_sample.txt
Checked out revision 1.
}}

localhost でも 192.168.1.4 でもどちらでもアクセスできます。

#pre{{
-bash-3.00$ rm -rf myrepo
-bash-3.00$ rm -rf .subversion 
-bash-3.00$ /usr/local/bin/svn checkout http://192.168.1.4/svnrepo/myrepo myrepo2
Authentication realm: <http://192.168.1.4:80> Authorization Realm
Password for 'sugimura': 
Checked out revision 1.
-bash-3.00$ /usr/local/bin/svn log subversion_sample.txt 
------------------------------------------------------------------------
r1 | sugimura | 2010-04-06 17:36:35 +0900 (Tue, 06 Apr 2010) | 1 line

first commit
------------------------------------------------------------------------
-bash-3.00$ 
}}

* ブラウザからのアクセス [#m73af983]

http://192.168.1.4/svnrepo/myrepo/ にアクセスして、
ブラウザからリポジトリを見ることもできます。
これもコマンドラインでアクセスするときと同様の権限が必要です。

&ref(subversion.png,,75%);

----
#comment

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS