さくらインターネットで Subversion 1.4.5 + Trac 0.10.4

さくらインターネットで Subversion 1.4.5 + Trac 0.10.4

さくらインターネットで Subversion Trac を参考にしつつ作業した。
前提条件となる部分のビルド作業自体については最新版についての記載がないので、主にその部分についてのメモを記す。

$HOME/local 以下に置き場所を確保

作業用のディレクトリおよび最終的なインストール先となるディレクトリを作成する。
最後の traccache は python egg 向けのキャッシュ置き場。

#!/bin/sh
mkdir -p $HOME/local/bin $HOME/local/src $HOME/local/lib
mkdir -p $HOME/local/lib/python2.4/site-packages
(cd $HOME/local/lib; ln -s python2.4 python)
mkdir -p $HOME/tmp/traccache

環境変数設定用スクリプト

$HOME/bin/tracenv ファイルに以下の内容で作成する。

#!/bin/sh
export PYTHONPATH=/home/XXX/local/lib/python:/home/XXX/local/lib/python/site-packages
export PATH=/home/XXX/local/bin:$PATH
export LD_LIBRARY_PATH=/home/XXX/local/lib
export PYTHON_EGG_CACHE=/home/XXX/tmp/traccache

作成後 chmod 705 $HOME/bin/tracenv を実行。

ポイント

  • この環境変数設定用スクリプトは、後に CGI 向けスクリプトとしても使う。CGI実行時は HOME 環境変数が設定されていないので、環境変数をあらかじめ展開しておく必要がある。

swig のインストール

01swig.sh スクリプトを作成してから実行した。

#!/bin/sh
. $HOME/bin/tracenv 
cd $HOME/local/src
target=swig-1.3.31
fetch http://jaist.dl.sourceforge.net/sourceforge/swig/$target.tar.gz
tar xzf $target.tar.gz
(cd $target; ./configure  --prefix=$HOME/local; make; make install)

rm -rf $target 
rm $target.tar.gz

ポイント

  • wgetの代わりに FreeBSD 標準コマンドの fetch を利用した
  • インストール後、ビルドに使ったファイル群は削除

apr のインストール

subversion のコンパイル前に apr, apr-util, neon をインストールしている。
以前は subversion 自体にこれらのソースが含まれていたが現在は含まれていないため自分で予めインストールする必要がある。

02apr.sh スクリプトを作成してから実行した。

#!/bin/sh
. $HOME/bin/tracenv 
cd $HOME/local/src
target=apr-1.2.11
fetch http://ring.sakura.ad.jp/pub/net/apache/apr/$target.tar.gz
tar xzf $target.tar.gz
cd $target
./configure --prefix=$HOME/local --disable-static
make
make install

cd ..
rm -rf $target
rm $target.tar.gz

ポイント

  • ソースの取得元として近い ring.sakura.ad.jp を利用した。

apr-util のインストール

02aprutil.sh スクリプトを作成してから実行した。

#!/bin/sh
. $HOME/bin/tracenv
cd $HOME/local/src
target=apr-util-1.2.10
fetch http://ring.sakura.ad.jp/pub/net/apache/apr/$target.tar.gz
tar xzf $target.tar.gz
cd $target
./configure --prefix=$HOME/local --with-apr=$HOME/local --with-expat=/usr/local --with-iconv=/usr/local --disable-static
make
make install

cd ..
rm -rf $target
rm $target.tar.gz

neon のインストール

02neon.sh スクリプトを作成してから実行した。

#!/bin/sh
. $HOME/bin/tracenv
cd $HOME/local/src
target=neon-0.26.2 
fetch http://www.webdav.org/neon/$target.tar.gz
tar xzf $target.tar.gz
cd $target
./configure --prefix=$HOME/local \
            --with-libxml2 \
            --with-ssl \
            --enable-shared \
            --disable-static
make
make install

cd ..
rm -rf $target
rm $target.tar.gz

ポイント

  • ここで利用しているneonのバージョンは最新版ではない。subversion 1.4.5 コンパイル時に利用可能な neon バージョンのチェックがあり、その中での最新版が 0.26.2 だった。subversion 側でこのバージョンチェックを無効にすることはできるが、subversion 側を信用して 0.26.2 を採用。

subversion のインストール

03subversion.sh スクリプトを作成してから実行した。

#!/bin/sh
. $HOME/bin/tracenv
cd $HOME/local/src
target=subversion-1.4.5

fetch http://subversion.tigris.org/downloads/$target.tar.bz2
tar xjf $target.tar.bz2
cd $target

./configure --prefix=$HOME/local --with-apr=$HOME/local --with-neon=$HOME/local --without-berkeley-db --enable-swig-bindings=python --with-swig=$HOME/local/bin/swig --disable-staticnice make
make install
nice make swig-py
make install-swig-py
(cd $HOME/local/lib/python/site-packages; rm -f svn-python; ln -s ../../svn-python)
(cd $HOME/local/lib/python/site-packages; rm -f svn; ln -s ../../svn-python/svn)
(cd $HOME/local/lib/python/site-packages; rm -f libsvn; ln -s ../../svn-python/libsvn)

cd ..
rm -rf $target
rm $target.tar.bz2

ポイント

  • subversion のビルドは他に比して時間がかかる。make にあたって nice を指定した。どのビルド作業も nice を指定すべきではあるが。

pysqlite のインストール

04pysqlite.sh スクリプトを作成してから実行した。

#!/bin/sh
. $HOME/bin/tracenv
cd $HOME/local/src
target=pysqlite-2.3.5
fetch http://initd.org/pub/software/pysqlite/releases/2.3/2.3.5/pysqlite-2.3.5.tar.gz

tar xzf $target.tar.gz

cd $target
cat > setup.cfg << __EOF__
[build_ext]
define=  
include_dirs=/usr/local/include
library_dirs=/usr/local/lib
libraries=sqlite3
__EOF__
python setup.py build
python setup.py install --prefix=$HOME/local
cd ..
rm -rf $target
rm $target.tar.gz

ポイント

  • sqlite 自体はレンタルサーバのものをそのまま利用した。
  • pysqlite は最新版で、ビルドにあたっては setup.cfg を作成するという方式になっている。この setup.cfg でレンタルサーバにあるものを利用するために include_dirs, library_dirs を指定している。

clearsilver のインストール

05clearsilver.sh スクリプトを作成してから実行した。

#!/bin/sh
. $HOME/bin/tracenv
cd $HOME/local/src
target=clearsilver-0.10.5

fetch http://www.clearsilver.net/downloads/$target.tar.gz
tar xzf $target.tar.gz
cd $target
./configure --prefix=$HOME/local --oldincludedir=$HOME/local/include --disable-ruby --disable-java --disable-perl --disable-csharp --disable-static
gmake
gmake install

(cd python; python setup.py build; python setup.py install --prefix=$HOME/local)
cd ..
rm -rf $target
rm $target.tar.gz

docutirs のインストール

06docutils.sh スクリプトを作成してから実行した。

#!/bin/sh
. $HOME/bin/tracenv
cd $HOME/local/src
target=docutils-0.4

fetch http://jaist.dl.sourceforge.net/sourceforge/docutils/$target.tar.gz
tar xzf $target.tar.gz
cd $target
python setup.py install --home=$HOME/local
cd ..
rm -rf $target
rm $target.tar.gz

pysetuptools のインストール

07pysetuptools.sh スクリプトを作成してから実行した。

#!/bin/sh
. $HOME/bin/tracenv
cd $HOME/local/src
cfg=$HOME/.pydistutils.cfg
echo [easy_install] > $cfg
echo >> $cfg
echo install_dir = $HOME/local/lib/python2.4/site-packages >> $cfg
echo script-dir = $HOME/local/bin >> $cfg
echo >> $cfg
echo find_links = http://sqlobject.org/ http://peak.telecommunity.com/dist/ >> $cfg

fetch http://peak.telecommunity.com/dist/virtual-python.py
python virtual-python.py --prefix=$HOME/local
fetch http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py --prefix=$HOME/local -U setuptools

rm virtual-python.py
rm ez_setup.py

ポイント

  • $HOME を展開した .pydistutils.cfgを作りたかったので echo を使っている。

trac-ja のインストール

09trac.sh スクリプトを作成してから実行した。

#!/bin/sh
. $HOME/bin/tracenv
target=trac-0.10.4-ja-1
fetch http://www.i-act.co.jp/project/products/downloads/$target.zip
unzip $target.zip

cd $target
python ./setup.py install --prefix=$HOME/local
# cp $HOME/local/share/trac/cgi-bin/trac.cgi $HOME/www

cd ..
rm -rf $target
rm $target.zip

ポイント

  • trac.cgi は $HOME/www 以下にコピーしない。CGIとして作成するシェルスクリプトから直接呼び出す。

subversionリポジトリの作成、tracリポジトリの作成、trac.ini の編集

さくらのレンタルサーバ特有の話題は特にないので今回は省略

trac.cgi の設置

$HOME/www/trac.cgi に以下のファイルを設置

#!/bin/sh
export TRAC_ENV=tracリポジトリの位置
. /home/XXX/bin/tracenv
exec /home/XXX/local/share/trac/cgi-bin/trac.cgi

chmod 705 $HOME/www/trac.cgi を実行しておく。
ポイント

  • suexec での実行のため以下の制限があるはず
    • 拡張子は .cgi でなければならない
    • パーミッションはきつめでないといけないはず。自分に対する実行パーミッションは必要
  • CGI実行時は HOME 環境変数が設定されていないので、環境変数をあらかじめ展開しておく必要がある
  • python 関連の設定については、事前に作成した 環境変数設定用スクリプト を参照
  • 最後に exec による呼び出しを使って少しだけプロセス空間をケチる
  • mod_rewrite ルールを書かなくても、$HOME/www/trac.cgi を置いただけで http://example.sakura.ne.jp/trac/ へのアクセスが可能になっている。apacheがどういう設定なのかは少し不思議。

(11/26 追記)
<URL:http://mimori.org/~h/tdiary/20071126.html#p03> にBasic認証対応にするための trac.cgi を記載している。

TracWebAdmin, TracAccountManager のインストール (どちらも失敗中)

10webadmin.sh スクリプトを作成してから実行した。

#!/bin/sh
. $HOME/bin/tracenv
$HOME/local/bin/easy_install --prefix=$HOME/local http://svn.edgewall.com/repos/trac/sandbox/webadmin

11accountmanager.sh スクリプトを作成してから実行した。

#!/bin/sh
. $HOME/bin/tracenv
$HOME/local/bin/easy_install --prefix=$HOME/local http://trac-hacks.org/svn/accountmanagerplugin/0.10

現状では、

  • TracWebAdminの easy_install は成功しているように見えるものの、trac.ini に記載しても有効にならない。
  • TracAccountManager は easy_install の最後に以下のようなエラーが発生する
    • zipimport.ZipImportError: bad local file header in /home/XXX/local/lib/python2.4/site-packages/TracAccountManager-0.1.3dev_r2548-py2.4.egg

python egg の挙動については全く素人なので難儀している。
当面使わないことにしてBasic認証生活でもいいかなと思っているところ。

さくらインターネットで Subversion 1.4.5 + Trac 0.10.4」への1件のフィードバック

  1. Unknown より:

    (wow gold) and (wow power leveling) trading site, (wow gold) are cheap, (wow power leveling) credibility Very good! Quickly into the next single! Key words directly to the website click on transactions!

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。