#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