kanonをmacへインストールしようとしてみた

気の迷いで、mackanonをインストールしてみようと思っちゃいました。
以下、作業メモ的ななにかです。


インストールの前提

  • apache(mod_wsgi)は元々インストールされているものを使うっぽいので、事前にインストールされている必要がある
  • 自分は、とりあえず「sudo port install mod_wsgi」を実行(これで必要なものが一通りインストールされる)
    • すでにpython環境を作っている場合は、いろいろ気をつけないといけないかも
  • 当然、MacPortsも事前にインストールされていなくてはいけない
  • 最後まで読めばわかりますが、最終的にはこれ実は嘘だということがわかります(苦笑)

OSの判定

  • kanon-setupをみるとOSを判定している箇所があるんで、OSがMacであることを判断する必要がある。
  • 以下で判断できるっぽいので、kanon-setupにmacの判定も追加
uname -a |grep Darwin

httpd.conf

  • mod_wsgiのインストールが完了すると以下のようなメッセージが表示される。なんで、mod_wsgi.soをロードする必要があるっぽい。あと、httpd.confは直接編集する必要があるみたい。つまりは、httpd.conf.rhel をまんま使えばok

########################################################
# To enable mod_wsgi add
# LoadModule wsgi_module modules/mod_wsgi.so
# to your apache2 config file:
# /opt/local/apache2/conf/httpd.conf
########################################################

  • httpd.conf のパスは他のOSと違うし、apacheの起動方法も違うっぽいので、そこはOSを判定して、mac用の記載を追加してあげる

mac対応版kanon-setupを実行(sudoして実行する必要あり)

  • これで準備が整ったので以下のコマンドを実行!

sudo ./kanon-setup

  • インストール時に、いやーなメッセージがでてるけど、メッセージはインストールできたといっている。信じて先に進みます(信じる力が大切だね!)

cp: var/*: No such file or directory

プロジェクト作ってみる

  • testというプロジェクトを作ってみる

/opt/kanon/bin/kanon-create-project test

  • 以下のような表示がでるので、使ったこともないMercurialを選択(笑)

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

Kanon プロジェクト作成ツール
(C)2011 Kanon Project

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

このツールはKanonのプロジェクトを作成するツールです。
ガイドに従って、情報を入力するとプロジェクトを作成することができます。

                                                                                                                                        • -


リポジトリのタイプを入力してください。

* svn : Subversion
* hg : Mercurial
* bzr : Bazaar
* (なし) : バージョン管理システムを使いません

リポジトリタイプ:

  • 以下のようなメッセージがでるので、経験したこともないscrumを選択(笑)

テンプレートを入力してください。標準のテンプレートは下記の通りです。

* default : 標準のテンプレートです。課題管理・簡易バグ管理・
ガントチャートやカレンダーでのタスク管理に利用します。
* scrum :スクラム開発のテンプレートです。バックログの管理や
バーンダウンチャートでのタスクの管理に利用します。

このマシンでは、下記のテンプレートを利用することができます。
default
scrum


テンプレート:

  • 確認画面がでるので、迷わず進む。いけばわかるさ

テンプレート: scrum
scrum
プロジェクト名: test
リポジトリタイプ: hg
テンプレート: scrum

上記のプロジェクトを本当に作成していいですか(y/n)

  • そうすると、パーミッションがないというようなエラーメッセージが延々と表示されます。涙目で見守りましょう!
  • どうみても終わっていないのですが、以下のようなメッセージも表示されます。「そんな慰めはいらねーよ」とつぶやきながら、涙をぬぐいます

プロジェクトのセットアップは終わりしました。
下記のURLでアクセスしてください。
(リポジトリタイプがbazaarの場合、リポジトリURLにtrunkを付けるとtrunkにアクセスできます)

sudoして、プロジェクト作ってみる

  • test2というプロジェクトを作ってみる

sudo /opt/kanon/bin/kanon-create-project test2

  • 以下のようなメッセージがでます

/opt/kanon/bin/kanon-create-project: line 154: hg: command not found
chown: apache.apache: Invalid argument
プロジェクトの生成と初期化
デフォルトの Wiki ページのインストール
CamelCase インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/CamelCase
InterMapTxt インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/InterMapTxt
InterTrac インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/InterTrac
InterWiki インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/InterWiki
PageTemplates インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/PageTemplates
RecentChanges インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/RecentChanges
SandBox インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/SandBox
TitleIndex インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TitleIndex
TracAccessibility インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracAccessibility
TracAdmin インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracAdmin
TracBackup インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracBackup
TracBrowser インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracBrowser
TracCgi インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracCgi
TracChangeset インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracChangeset
TracEnvironment インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracEnvironment
TracFastCgi インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracFastCgi
TracFineGrainedPermissions インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracFineGrainedPermissions
TracGuide インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracGuide
TracImport インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracImport
TracIni インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracIni
TracInstall インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracInstall
TracInterfaceCustomization インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracInterfaceCustomization
TracJa インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracJa
TracLinks インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracLinks
TracLogging インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracLogging
TracModPython インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracModPython
TracModWSGI インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracModWSGI
TracNavigation インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracNavigation
TracNotification インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracNotification
TracPermissions インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracPermissions
TracPlugins インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracPlugins
TracQuery インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracQuery
TracReports インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracReports
TracRepositoryAdmin インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracRepositoryAdmin
TracRevisionLog インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracRevisionLog
TracRoadmap インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracRoadmap
TracRss インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracRss
TracSearch インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracSearch
TracStandalone インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracStandalone
TracSupport インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracSupport
TracSyntaxColoring インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracSyntaxColoring
TracTickets インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracTickets
TracTicketsCustomFields インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracTicketsCustomFields
TracTimeline インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracTimeline
TracUnicode インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracUnicode
TracUpgrade インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracUpgrade
TracWiki インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracWiki
TracWorkflow インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/TracWorkflow
WikiDeletePage インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/WikiDeletePage
WikiFormatting インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/WikiFormatting
WikiHtml インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/WikiHtml
WikiMacros インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/WikiMacros
WikiNewPage インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/WikiNewPage
WikiPageNames インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/WikiPageNames
WikiProcessors インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/WikiProcessors
WikiRestructuredText インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/WikiRestructuredText
WikiRestructuredTextLinks インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/WikiRestructuredTextLinks
WikiStart インポート元 /Users/hoge/.python-eggs/Trac-0.12.1ja1-py2.6.egg-tmp/trac/wiki/default-pages/WikiStart

                                                                                                                                        • -

注意: リポジトリのインデックスに失敗しました。

これにはいくつかの原因が考えられます: リポジトリの種類が間違っている、
このリポジトリのためのライブラリが用意されていない、
指定したリポジトリのパスに実際のリポジトリがない…

現状でも Trac を使い始める事はできますが、
リポジトリブラウザを有効にするために、
trac.ini ファイルの [trac] repository_type と repository_path の
設定を再度確認する必要があります。

                                                                                                                                        • -

Trac Environment 'test2' ができました。

今後、この環境の設定をする場合は、次のファイルを利用します:

/var/opt/kanon/trac/test2/conf/trac.ini

あなたがこの新しいプロジェクトのテストを考えているなら、
スタンドアロンウェブサーバ `tracd` を試してみてください:

tracd --port 8000 /var/opt/kanon/trac/test2

それから、ブラウザで http://localhost:8000/test2 にアクセスします。
インストールしたバージョンに合わせた今後のセットアップ情報などが含まれた、
ドキュメントが閲覧できます。(例えばウェブサーバで公開する手順など)

最新のドキュメントは、プロジェクトのウェブサイトから入手できます:

http://trac.edgewall.org/

Congratulations!

Gijiroku インポート元 /etc/opt/kanon/trac-template/scrum/trac-wiki/Gijiroku
GijirokuTemplate インポート元 /etc/opt/kanon/trac-template/scrum/trac-wiki/GijirokuTemplate
MyTickets インポート元 /etc/opt/kanon/trac-template/scrum/trac-wiki/MyTickets
Release インポート元 /etc/opt/kanon/trac-template/scrum/trac-wiki/Release
Rules インポート元 /etc/opt/kanon/trac-template/scrum/trac-wiki/Rules
SearchHyperEstraier インポート元 /etc/opt/kanon/trac-template/scrum/trac-wiki/SearchHyperEstraier
TLSetup インポート元 /etc/opt/kanon/trac-template/scrum/trac-wiki/TLSetup
WikiStart インポート元 /etc/opt/kanon/trac-template/scrum/trac-wiki/WikiStart

Timing and Estimation needs an upgrade
Upgrading Database
Creating bill_date table
Creating report_version table
Upgrading report_version table to v4
Dropping report_version table
Upgrading reports
Upgrading fields
Upgrading usermanual
Done Upgrading
Attempting to create the burndown table
Attempting to modify the milestone table
アップグレードが終了しました。

次のコマンドを実行すると Trac のドキュメントをアップグレードできます:

trac-admin /var/opt/kanon/trac/test2 wiki upgrade
終了しました。
chown: apache.apache: Invalid argument

プロジェクトのセットアップは終わりしました。
下記のURLでアクセスしてください。
(リポジトリタイプがbazaarの場合、リポジトリURLにtrunkを付けるとtrunkにアクセスできます)

プロジェクト管理 : http://[サーバ名]/trac/test2
リポジトリ : http://[サーバ名]/hg/test2

  • 以下の場所で、落ちているみたいですね。
   hg init $KANON_VAR/hg/$PROJECT_NAME
   chown $APACHE_USER.$APACHE_USER -R $KANON_VAR/hg/$PROJECT_NAME
  • ここで、冷静になって、kanon-setupと同じディレクトリをながめてみます。pkglist.rhel、pkglist.ubuntuというファイルが見つかりますね。
  • この二つの中身をのぞいてみましょう。まずは、pkglist.rhel

httpd
python-setuptools
sqlite
mod_dav_svn
mod_wsgi
subversion
mercurial
bzr
gcc

python-dev
python-setuptools
libapache2-mod-wsgi
apache2
mercurial
subversion
python-pysqlite2
sqlite3
python-subversion
python-excelerator
libapache2-svn
gcc
bzr

  • はーん、なるほどね〜。そういえば、そんなことをしている箇所があったのを忘れてた・・・・・・・・・・おいら、泣いてもいいよね
  • というわけで、MacPortsのリストを作ってインストールするようにして、必要があればスクリプトに細かな修正していけばmacでも動くようになるんじゃないかな〜、ってことがわかりました。あとは頼みます(笑)
  • ちなみに、自分が実行したkanon-setupはこんな感じ。「### install ubuntu package」あたりをみると涙がさそわれますな〜
#!/bin/bash

export KANON_OPT=/opt/kanon
export KANON_VAR=/var/opt/kanon
CHECK_UBUNTU=`uname -a |grep ubuntu`
CHECK_DEBIAN=`uname -a |grep debian`
CHECK_MAC=`uname -a |grep Darwin`
if [ "$CHECK_UBUNTU" != '' ]
then
    OS='ubuntu'
    APACHE_USER=www-data
elif [ "$CHECK_DEBIAN" != '' ]
then
    OS='ubuntu'
    APACHE_USER=www-data
elif [ -f /etc/redhat-release ]
then
    OS='rhel'
    APACHE_USER=apache
elif [ "$CHECK_MAC" != '' ]
then
    OS='mac'
else
    echo "サポートされていないOSです。"
    echo "現在サポートされいているOSは、"
    echo ""
    echo "  * Ubuntu 10.10 Server"
    echo "  * Debian GNU/Linux, kfreebsd 6.0"
    echo "  * RedHat Enterprise Linux 6.0"
    echo "  * Oracle Enterprise Linux 6.0"
    echo ""
    echo "です。"
    exit
fi

if [ "$USER" != 'root' ]
then
    echo "rootでコマンドを実行してください。"
fi

if [ -d /opt/kanon ]
then
    echo "=========================================================================="
    echo "注意!! このマシンには既にKanonがインストールされているかも。確認してね♪"
    echo "=========================================================================="
fi
echo ""
echo "このコマンドはKanonをインストールするよ。"
echo "既にkanonインストールされている場合は、上書きされて消えちゃうの。"
echo -n "Kanonをインストールする?(y/n) "
read YN

if [ "$YN" != "y" ]
then
    echo "インストールを中断したよ。"
    exit
fi

### install ubuntu package
if [ "$OS" = 'ubuntu' ]
then
    apt-get update
    apt-get -y install `cat pkglist.ubuntu`
elif [ "$OS" = 'rhel' ]
then
    yum -y install `cat pkglist.rhel`
fi

### install files
cp -fr opt/* /opt
cp -frn etc/* /etc
cp -frn var/* /var


### setup configuration
export PYTHONPATH=/opt/kanon/lib/python2.6:/opt/kanon/lib/python2.6/site-packages
cp resource/dot.pydistutils.cfg ~/.pydistutils.cfg

## setup sitecustomize for python
if [ -f /etc/python2.6/sitecustomize.py ]
then
    CHK=`grep "setdefaultencoding" /etc/python2.6/sitecustomize.py`
    if [ "$CHK" = '' ]
    then
        cat opt/kanon/lib/python2.6/site-packages/sitecustomize.py >> /etc/python2.6/sitecustomize.py
    fi
fi

### install python components
easy_install --prefix $KANON_OPT http://svn.edgewall.org/repos/genshi/tags/0.6.0/
easy_install --prefix $KANON_OPT http://ftp.edgewall.com/pub/babel/Babel-0.9.5.zip
easy_install --prefix $KANON_OPT http://www.i-act.co.jp/project/products/downloads/Trac-0.12.1.ja1.zip
easy_install --prefix $KANON_OPT xlrd
bzr co lp:trac-bzr /tmp/trac-bzr-install
easy_install --prefix /opt/kanon /tmp/trac-bzr-install
rm -fr /tmp/trac-bzr-install


### install trac plugins
easy_install --prefix $KANON_OPT http://svn.edgewall.com/repos/trac/plugins/0.12/mercurial-plugin

#resource/pluginsディレクトリのプラグインをインストール
pushd .

cd resource/plugins
for i in `ls -1 .`
do
    cd $i;python setup.py install --prefix=/opt/kanon
    cd ..  
done
cd ../..

# install plugins from web site
rm -fr /tmp/kanon_build
for i in `cat pluginlist`
do
    cd /tmp
    svn co $i kanon_build
    cd kanon_build
    python setup.py install --prefix=/opt/kanon
    cd ..
    rm -fr kanon_build
done
popd


### setup apache and restart
if [ "$OS" = 'ubuntu' ]
then
    if [ ! -f /etc/apache2/sites-available/kanon ]
    then
        cp resource/httpd.conf.ubuntu /etc/apache2/sites-available/kanon
    fi
    a2enmod expires
    a2enmod auth_digest
    a2ensite kanon
    service apache2 stop
    service apache2 start
elif [ "$OS" = 'rhel' ]
then
    CHK=`grep "Kanon" /etc/httpd/conf/httpd.conf`
    if [ "$CHK" = '' ]
    then
        cat resource/httpd.conf.rhel >> /etc/httpd/conf/httpd.conf
    fi
    echo 0 > /selinux/enforce
    echo "SELinuxが無効化されました"
    service httpd stop
    service httpd start
elif [ "$OS" = 'mac' ]
then
    CHK=`grep "Kanon" /opt/local/apache2/conf/httpd.conf`
    if [ "$CHK" = '' ]
    then
        cat resource/httpd.conf.rhel >> /opt/local/apache2/conf/httpd.conf
    fi
    /opt/local/apache2/bin/apachectl stop
    /opt/local/apache2/bin/apachectl start
fi

# データディレクトリが存在しない場合作成
if [ ! -d "$KANON_VAR/trac" ]
then
    mkdir -p "$KANON_VAR/trac"
fi

if [ ! -d "$KANON_VAR/hg" ]
then
    mkdir -p "$KANON_VAR/hg"
fi

if [ ! -d "$KANON_VAR/bzr" ]
then
    mkdir -p "$KANON_VAR/bzr"
fi

if [ ! -d "$KANON_VAR/svn" ]
then
    mkdir -p "$KANON_VAR/svn"
fi

echo "Kanon Team Conductorのインストールが完了しました。"
echo $KANON_OPT"/bin/kanon-create-project コマンドでプロジェクトを作成してください。"