家サーバを落としている&OS不調で再インストール。
によって WindowTeleport のソースを取り出せないでいる…。
前から計画していた Subversion の導入を今日やってみた。
導入したソフトは
- Subversion 1.4.5
- Apache Portable Runtime 0.9.17
- Apache Portable Runtime Utillity 0.9.15
- trac 0.10.4(ja-1)
- swig 1.3.33
- clearsilver 0.10.5
- pysqlite 2.3.5
の8つ。
前に会社で借りている方に入れたときは、 sqlite も入れたんだけど FreeBSD 6.1 にVersionアップしてからは標準で入ってるようなので、今回は除外。
そういや、 trac のプラグインで
- TracAccountManager 0.1.3dev
- TracWebAdmin 0.1.2dev
も入ってる。
1回経験してるから、すんなり行くだろうと思ったら…大間違いだった。
できるだけ新しいバージョンを利用しようとしたのも原因かもしれないけど、なかなか一筋縄ではいかないものだなと…。
【準備】
$ cd ~/
$ mkdir -p local/lib/python2.4/site-packages
$ cd local/lib
$ ln -s python2.4 python
$ export PYTHONPATH=$HOME/local/lib/python:$HOME/local/lib/python/site-packages
~/local/lib/python2.4/ 以下に今回コンパイルするpythonのライブラリ群を入れていくことにする。
PYTHONPATH(pythonのライブラリ位置を指定する環境変数)に今回作成したディレクトリパスを指定する。
PYTHONPATHは最終的に .bashrc に追記した。
【Subversion】
$ mkdir ~/local/src
$ cd ~/local/src
$ wget http://subversion.tigris.org/downloads/subversion-1.4.5.tar.gz
$ wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-0.9.17.tar.gz
$ wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-util-0.9.15.tar.gz
$ tar xzf subversion-1.4.5.tar.gz
$ tar xzf apr-0.9.17.tar.gz
$ tar xzf apr-util-0.9.15.tar.gz
$ mv apr-0.9.17 subversion-1.4.5/apr
$ mv apr-util-0.9.15 subversion-1.4.5/apr-util
$ cd subversion-1.4.5
$ ./configure --prefix=$HOME/local
$ make
$ make install
~/local/src/ ディレクトリにソースファイルをダウンロードしてコンパイルを行う。
Apache Portable Runtilme と Utility はSubversionの中に移動して Subversion のコンパイルを行うだけでOK。
Subversionの configure 時に設置先を $HOME/local とする。
make、make install でインストール完了。
特段エラーは出なかった。
【trac用の準備】
$ cd ~/local/src
$ wget http://www.i-act.co.jp/project/products/downloads/trac-0.10.4-ja-1.zip
$ wget http://nchc.dl.sourceforge.net/sourceforge/swig/swig-1.3.33.tar.gz
$ wget http://www.clearsilver.net/downloads/clearsilver-0.10.5.tar.gz
$ wget http://initd.org/pub/software/pysqlite/releases/2.3/2.3.5/pysqlite-2.3.5.tar.gz
trac、swig、clearsilver、pysqliteのソースをダウンロード。
【Subversionからswigのライブラリをつくる】
$ tar xzf swig-1.3.33.tar.gz
$ cd swig-1.3.33
$ ./configure --prefix=$HOME/local
$ make
$ make install
$ cd ../subversion-1.4.5
$ make swig-py
$ make install-swig-py
$ cd ~/local/lib/python/site-packages
$ ln -s $HOME/local/lib/svn-python svn-python
$ ln -s $HOME/local/lib/svn-python/svn svn
$ ln -s $HOME/local/lib/svn-python/libsvn libsvn
swigのライブラリを作り、その後にSubversionのswigライブラリを作る。
~/local/lib/python/site-packages ディレクトリに存在しないとpythonが認識してくれないらしいのでシンボリックリンクを張る。
【pysqlite】
$ cd ~/local/src
$ tar xzf pysqlite-2.3.5.tar.gz
$ cd pysqlite-2.3.5
$ cp setup.cfg setup.cfg.org
$ vi setup.cfg
$ diff setup.cfg.org setup.cfg
3,4c3,4
< include_dirs=/usr/include
< library_dirs=/usr/lib
---
> include_dirs=/usr/local/include:/home/rottarte/local/include
> library_dirs=/usr/local/lib:/home/rottarte/local//lib
$ python setup.py build
$ python setup.py install --prefix=$HOME/local
最初は、pysqlite-2.4.0を使っていたが、コンパイル・インストールは上手くいくが trac-admin initenv で
Creating and Initializing Project
Failed to create environment. database parameter must be string or APSW Connection object
Traceback (most recent call last):
File "/home/rottarte/local/lib/python2.4/site-packages/trac/scripts/admin.py", line 613, in do_initenv
options=options)
File "/home/rottarte/local/lib/python2.4/site-packages/trac/env.py", line 145, in __init__
self.create(options)
File "/home/rottarte/local/lib/python2.4/site-packages/trac/env.py", line 250, in create
DatabaseManager(self).init_db()
File "/home/rottarte/local/lib/python2.4/site-packages/trac/db/api.py", line 71, in init_db
connector.init_db(**args)
File "/home/rottarte/local/lib/python2.4/site-packages/trac/db/sqlite_backend.py", line 121, in init_db
cnx = sqlite.connect(path, timeout=int(params.get('timeout', 10000)))
ValueError: database parameter must be string or APSW Connection object
Failed to initialize environment. 1
Traceback (most recent call last):
File "~/local/lib/python2.4/site-packages/trac/scripts/admin.py", line 617, in do_initenv
sys.exit(1)
SystemExit: 1
というエラーになってしまい、pysqlite-2.3.5 にしたら上手くいったので2.3.5を使うことにした。
2.4.0で何か変わってしまったのかな…。
【clearsilver】
tracで使うテンプレートエンジン。
でも、次期バージョンのtracでは使われなくなるとか…
$ cd ~/local/src
$ tar xzf clearsilver-0.10.5.tar.gz
$ cd clearsilver-0.10.5
$ ./configure --prefix=$HOME/local --oldincludedir=$HOME/local/include --disable-apache --disable-ruby --disable-java --disable-perl --disable-csharp --disable-static
$ make
"rules.mk", line 54: Missing dependency operator
"rules.mk", line 56: Need an operator
"rules.mk", line 57: Missing dependency operator
"rules.mk", line 59: Need an operator
"rules.mk", line 105: Missing dependency operator
"rules.mk", line 107: Need an operator
"rules.mk", line 108: Missing dependency operator
"rules.mk", line 111: Need an operator
"rules.mk", line 167: Missing dependency operator
"rules.mk", line 168: Could not find Makefile.depends
"rules.mk", line 169: Need an operator
make: fatal errors encountered -- cannot continue
$ gmake clean
$ gmake
$ gmake install
make コマンドではエラーになり、gmakeでは正常にコンパイルできた。
正常にインストールが完了していれば $HOME/local/python/site-packages に neo-cgi.so がある。
【trac本体】
$ cd ~/local/src
$ unzip trac-0.10.4-ja-1.zip
$ cd trac-0.10.4-ja-1
$ python ./setup.py install --prefix=$HOME/local
上記でインストール完了。
local/share にいろいろ出来てるはず。
【リポジトリ】
$ mkdir p ~/var/svn/repos
var/svn/repos ディレクトリ以下に置いていくことにする。
今回は、家サーバのリポジトリデータがあるのでそれを展開して使う。
【trac設置】
$ mkdir ~/var/trac
$ cd ~/var/trac/
$ rm -rf WindowTeleport/
$ ~/local/bin/trac-admin WindowTeleport initenv
trac-adminの質問に答えていけばWindowTeleport用のtracが作成される。
$ mkdir -p ~/www/trac
$ cd ~/www/trac
$ vi WindowTeleport.cgi
$ chmod u+x WindowTeleport.cgi
Web上からアクセスすためのCGI作成。
WindowTeleport.cgiのソースは
#!/bin/sh
ROOT_DIR=/home/rottarte
LD_LIBRARY_PATH=$ROOT_DIR/local/lib
export LD_LIBRARY_PATH;
TRAC_ENV=$ROOT_DIR/var/trac/WindowTeleport
export TRAC_ENV
PYTHONPATH=$ROOT_DIR/local/lib/python:$ROOT_DIR/local/lib/python/site-packages
export PYTHONPATH
/usr/local/bin/python $ROOT_DIR/local/share/trac/cgi-bin/trac.cgi
となる。
(実際には、 trac/WindowTeleport.cgi にアクセスしても Not Found なのであしからず…)
【TracWebAdmin】
svn co http://svn.edgewall.com/repos/trac/sandbox/webadmin/
でのチェックアウトは出来なかったので、Windows上でチェックアウトしてからFTPでアップロード。
$ cd ~/local/src/TracWebAdmin
$ python setup.py install --prefix=$HOME/local
Installed /home/rottarte/local/lib/python2.4/site-packages/TracWebAdmin-0.1.2dev-py2.4.egg
Processing dependencies for TracWebAdmin==0.1.2dev
Finished processing dependencies for TracWebAdmin==0.1.2dev
【TracAccountManager】
$ cd ~/local/src
$ mkdir accountmanagerplugin
$ cd accountmanagerplugin/
$ wget http://trac-hacks.org/changeset/latest/accountmanagerplugin/0.10?old_path=/\&filename=accountmanagerplugin/0.10\&format=zip
$ mv 0.10\?old_path\=%2F\&filename\=accountmanagerplugin%2F0.10\&format\=zip accountmanagerplugin.zip
$ unzip accountmanagerplugin.zip
$ cd accountmanagerplugin
$ cd 0.10
$ python setup.py --prefix=$HOME/local
階層がaccountmanagerplugin/accountmanagerplugin/ と多重になったのは、気にしないでください。
【tracにプラグインの利用設定】
$ cd ~/var/trac/WindowTeleport/conf/
$ vi trac.ini
trac.iniには以下を追記
[account-manager]
password_format = htpasswd
password_file = /home/xxxxxx/var/trac/trac.htpasswd
[components]
trac.web.auth.LoginModule = disabled
acct_mgr.* = enabled
acct_mgr.web_ui.RegistrationModule = enabled
webadmin.* = enabled
初期ユーザー登録後は、acct_mgr.web_ui.RegistrationModule = disable とする。
こんな感じでインストール完了。
あとは、var/svn/repos などは自分以外アクセス出来ないように
chmod -R go-rwx ~/var/svn/repos/
としておく。
【外部からのアクセス】
外側からは svn+ssh プロトコルを使ってアクセスする。
そのためには、あらかじめSSHnおキーファイルを作る必要がある。
また、 authorized_keys にコマンド指定すると PuTTY の PAgeant にキーを読み込ませておけばアクセスできるようになる。
$ ssh-keygen -t rsa -f $HOME/.ssh/USERNAME_id_rsa
$ cd .ssh/
$ cat USERNAME_id_rsa.pub >> authorized_keys
$ vi authorized_keys
authorized_keysファイルは以下のように変更する
ssh-rsa AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= username@hostname
↓
command="$HOME/local/bin/svnserve -t --tunnel-user=USERNAME -r $HOME/var/svn/repos",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= username@hostname
これで、今作ったキーによるアクセスでは svnserve コマンドのみが実行されるようになる。
この方法でユーザーごとにキーファイルを作ってauthorized_keysファイルに追加していけば、複数のユーザーでSubversionを使うことができる。
最初、no-X11-forwarding を no-X11-fowarding と forwarding の r を抜いて記述していて1時間くらい接続できずに悩んでいた…。
ただの誤字だったとわかったときは、なんか凹んだ。
2回目とは言え、いろいろ試しながらやったことをまとめた記事なので…もしかしたら順番的におかしい部分があるかもしれない。
また、sakura.ne.jpのレンタルサーバでこの方法で上手くいくという保証もないので、やってみる方は頑張ってください。
ネットで探すと、結構情報があるようなので…そっちの方を参考にしていただければ。
Lynrinがメモしたの?