2004/09/30

まずはsubversion

subversionのインストールはややこしい.まずは要るものを下調べしておかないと.
やりたいのは、DeltaVベースのサーバを立てて、できればViewCVSも入れときたい...
けどViewCVSはなぜかうまくいったことが無いので不安...できなければあきらめることにする.
xmlのログがかなり使えるのであんまり要らないし.

要るものリスト(インストール順)

BerkeleyDB
svnのバックエンドになる.1.1からはバックエンドの選択肢がだいぶ広がる模様
Apache2 + apr
DeltaVのためにはApadhe2も必要らしい
python
ViewCVSはこいつで動いている.
swig
ViewCVSへのインターフェイスを開くために要る模様
subversion
これが本命.svn://で動かすならほぼこれのみでいいはずだけど...
ViewCVS
こいつがなぜかうまくいったためしがない. こいつ自身じゃなくてsvnのオプションが入らないんだけど.

BerkeleyDB

/usr/ports/databases/db42にある.-nocriptでもいいのかもしれない.
make; make installで普通に入る模様.

Apache2 + apr

最低限の条件は、
  • MOD_DAVが入っていて、MOD_DAV_SVNを登録できること
  • 上記BerkeleyDBを使用すること
の2つ.
なので、最低限を考えれば、WITH_DAV_MODULES=YESとWITH_BERKELEYDB=DB42の2つははずせない.
で、make WITH_DAV_MODULES=YES WITH_BERKELEYDB=DB42 してみるとopenssl,expatでエラーが発生する.
それぞれ下記の作業で入れなおすと何とかうまくいった.
で、そのたびにmakeをやり直してmake install した.本当はmake clean もすべきだろうけど.

openssl

どうもopensslのバージョンが合っていないそうなので、入れなおす.
whereis opensslで探して今有るのを削除してから/usr/ports/seculity/opensslでmake;make install.
# なんて大雑把な...やっちゃまずいっしょ.libとか残るし... < 社内サーバなので無茶してる
# /stand/sysinstallで削除すれば良いのに.

expat

/usr/ports/textproc/expat2でmake deinstall; make install

PHP

phpinfo()でapacheの設定を確認するためにPHPを入れてみる.
軽快なJavaでは「変なもの」呼ばわりされていたけど。
本気で使うわけではないのでオプションはほとんど無し. 本当に使うときには入れなおさないと.

/usr/ports/lang/php5でmakeすると設定メニューが立ち上がる. ちょっと感動.
APACHE2のみ有効にしてOK.
で、make install.

/usr/local/etc/apache2/httpd.confに、

AddType application/x-httpd-php .php
を追記して、
>?php phpinfo(); ?<
とだけ書いたファイルを/usr/local/www/data以下に.phpで作って、
apachectl restartする.
で、ブラウザで開いてみて設定を確認.

python

有るけど古かったので再インストール.
/usr/ports/lang/pythonに入ってmake; make deinstall; make install
なんでmake reinstallが効かないんだろう?古いのがあるからいやとかいわれてしまった.

swig

/usr/ports/devel/swig13に入ってmake; make install .
楽ちん、楽ちん.

subversion

いよいよ本番. ここまで長かった...(既に半日過ぎている)
Apache2用のDAV_SVNが要るので、WITH_MOD_DAV_SVNは必須. このオプションにはWITH_APACHE_APRも含まれているとの事.
pythonへのインターフェイスもいるが、これはsubversion-pythonという設定済みのものがあるらしい.
で、 /usr/ports/devel/subversion-python に入って make -D WITH_MOD_DAV_SVN としてみる. 通った!(実はここまでに何回か失敗し、1度apacheを入れなおしたりもしたんだけど...)
で、make install . 問題なし.

ようやくインストールはすんだのでレポジトリを作る.
まず、リポジトリは/usr以下にするか/home以下にするか、だけど.~svn/repos以下につくるのがいいかなぁ、と思っている.
/usr以下は大きめに取ってたんだけど(7G. homeは4G)いまやどちらも4Gずつしかない.
基本社内サーバなので/usr/local/wwwはどんどん太るだろうし. てなわけで、/home/svn/reposに決定.
で、svnユーザになって、mkdir ~/repos でレポジトリ置き場を作って svnadmin create /home/svn/repos/testした.

で、次はapacheの設定.rootになってvi /usr/local/etc/apache2/httpd.conf.
mod_dav.soのLoadModuleのコメントをはずす. mod_dav_svn.soはインストーラが書いてくれる.
つぎに、/etc/groupを編集してsvnグループにwwwを追加する.

svn:*:1002:www
1002は実際のGIDで、複数登録したければwww,user1,user2のようにカンマでつないでいく.
本当はwwwユーザでwebdavリポジトリを作るべきかも知れない.
で、httpd.confの設定. 作ったリポジトリをDeltaVで公開し、読み取りはフリーで書き込みはベーシック認証を使って行う.
<Location /svn>
  DAV svn
  SVNParentPath /home/svn/repos
  AuthType Basic
  AuthName "Subversion repository"
  AuthUserFile /home/svn/repos/passwd
  
  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept>
</Location>
意味は以下のとおり.
<URLが/svn以下の設定>
  DAVフォルダで、バックエンドはsvn
  /home/svn以下のリポジトリを/svn/repos以下に展開する
  ベーシック認証を行う
  認証の名前(ダイアログに出るやつ)は"Subversion repository"
  認証ファイルは /home/svn/repos/passwdを使う
  
  <次のプロトコル以外は制限 GET PROPFIND OPTIONS REPORT>
    有効なユーザを要求する
  </制限終わり>

</URL/svn以下の設定終わり>
あとは、/home/svn/reposでhtpasswd (-c) passwd user のようにしてパスワードを追加していく.
おつかれした.

ViewCVS

こいつはsourceforgeから取ってこないといけないらしい./usr/local/src/あたりでcvsを使って、
cvs -d:pserver:[email protected]:/cvsroot/viewcvs login
cvs -d:pserver:[email protected]:/cvsroot/viewcvs co viewcvs
で取得.
インストール先を聞いてくるので/usr/local/viewcvsあたりにおいてその中のwwwに入り、
cp -R cgi /usr/local/www/cgi-bin/viewcvs
などとしてコピーする.

で、設定. 設定ファイルはインストールしたフォルダにviewcvs.confという名前であるので、distを取っておいて編集.
それぞれコメントがあるので、コメントの直下に設定を書いていく.どこでも効きそうだけど.
デフォルトで効いているcvs_rootsを切っておいて、root_parentsは/home/svn/repos : svnに設定.
default_root はひとまず test としておく.
結果、以下の3点がそれぞれの場所の変更点となる
コメントアウト:

#cvs_roots=/home/cvs
追加:
root_parents = /home/svn/repos
値を変更:
default_root = test
以上で完了.
つかれたー、丸一日かかってしまった...

cvsupのインストール

FreeBSDが入って早速行ったのはcvsupのインストール.
こいつでportsを最新にしてからほかのものをおもむろに入れる.

portsで楽ちん

/usr/ports/net/cvsupに行ってrootでmake; make install.
これで/usr/local/binと/usr/local/man/man1にそれぞれコマンドとマニュアルが入った模様.

めんどくさい設定

設定項目のうち,ほんとにめんどくさいのは要らん言語のportsたちを除外すること.
ローカライズ物はjp以外いらないよ、って書ければ楽なのに、jp以外のあらゆるロケールを除外しないといけない.
あっても問題はおきないのでとりあえず除外はなしで手を抜く.
結果、設定は以下のとおり。
*default tag=.
*default host=cvsup.jp.freebsd.org
*default prefix=/usr
*default base=/usr/local/etc/cvsup
*default release=cvs delete use-rel-suffix

ports-all
上から順に、
cvsのタグが「.」のバージョンを取得
cvsのホストはcvsup.jp.freebsd.org
/usr以下に(portsディレクトリを)エクスポートする
更新記録は/usr/local/etc/cvsup以下に保存する
メインのcvsから取得 消えたファイルは削除する ???

ports全部を取る
use-rel-suffixの説明がどこにも見つからないが、書いておかないといけないとの事.

使い方

cvsup 設定ファイル
で起動できるので、cvsup /usr/local/etc/cvsup/ports-supfileとするか、
/usr/local/etc/cvsupまでいってcvsup ports-supfileとする.
rootで起動しないといけないことに注意する.

コマンドとX環境で自動的にCUI/GUIが切り替わるのは便利.
多分操作はほとんどCUIですることになるけど.