桜、抹茶、白、日記

名古屋市在住のC++使いのcoderの日記だったもの。

kanon のインストールメモ

d:id:youandi:20111226:p3
今週からLinux環境でのお仕事が始まっているのですが、Windows環境ではTracLightningを使っていたので、Linux環境ではkanonを使ってみる事に。

今回の環境

    • CentOS 5.8 x86_64版
    • kanon
      • 2012/10/22に取得
    • Proxy環境
      • 「192.168.0.0:65536」で説明

kanonのインストール

Mercurialのインストール

rootで作業

 $ sudo -s

Mercurialのインストール

 # yum install -y mercurial

MercurialのProxy設定

 # vim ~/.hgrc
[http_proxy]
host = 192.168.0.0:65536
kanonのインストール

kanonの取得

 # hg clone https://bitbucket.org/okamototk/kanonconductor

rootで作業

 $ sudo -s

kanonインストーラーの実行

 # cd kanonconductor
 # bash ./kanon-setup

その他OS設定

設定1:apache自動起動設定

手動で起動

 # /etc/init.d/httpd start

OS起動時の自動起動設定

 # /sbin/chkconfig httpd on
設定2:Firewallの設定変更

Firewall(iptables)でのTCP80番ポートの通信を許可する

 # vi /etc/sysconfig/iptables
〜
-A INPUT -m state --state NEW -m tcp -p tcp --dport XXX -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
〜
その他:tracへの接続

初期設定はID=admin, PW=IDと同じ

問題

その1:PATH設定

kanon-setupのスクリプト内において「/sbin/service」の呼び出しが「service」で記述されている為、apache等のデーモンの制御処理が動作しない。
なのでインストーラー実行時は環境変数PATHに「/sbin」「/usr/sbin」のパスを通しておく。

 # PATH=/sbin:/usr/sbin:$PATH bash ./kanon-setup

とりあえず本件以外にもセットアップで色々と問題があったのでログを取りながら作業する。

 # rm -fr /var/opt/kanon/trac/SampleProject /var/opt/kanon/svn/SampleProject
 # PATH=/sbin:/usr/sbin:$PATH bash ./kanon-setup 2>&1 | tee kanon-setup.log

また、インストールされるkanonスクリプト群も同様の問題を抱えている。

その2:Proxy接続

README-ja.txtの説明が足りていない。
こちらのblogには正しい説明書きがあった。

wgetを実行するには、環境変数「http_proxy」「https_proxy」の設定が必要。

 # vi ~/.barshrc
 export https_proxy=http://192.168.0.0:65536/
 export http_proxy=$https_proxy

インストール中にsubversionのチェックアウトが行われるので、subversionのproxy設定も必要。

 # vi ~/.subversion/servers
 [global]
 http-proxy-host = 192.168.0.0
 http-proxy-port = 65536
その4:apacheの起動エラー

mod_pythonが入っているとmod_wsgiと競合してapacheの起動ができない。

 # /usr/sbin/apachectl configtest
Syntax error on line 1 of /etc/httpd/conf.d/kanon.conf:
Invalid command 'WSGIPythonPath', perhaps misspelled or defined by a module not included in the server configuration

「/etc/httpd/conf.d/python26-mod_wsgi.conf」に記載があるが、mod_pythonの設定ファイル(python.conf)の読み込み順序を調整すれば(とりあえず?)良い。

 # cd /etc/httpd/conf.d
 # ls -l
-rw-r--r-- 1 root root 1671  1月  7  2007 python.conf
-rw-r--r-- 1 root root 1087 10月 21  2010 python26-mod_wsgi.conf
 # mv python.conf pythonZZ.conf
 # ls -l
-rw-r--r-- 1 root root 1087 10月 21  2010 python26-mod_wsgi.conf
-rw-r--r-- 1 root root 1671  1月  7  2007 pythonZZ.conf

確認。

 # /usr/sbin/apachectl configtest
Syntax OK
その5:subversionの更新

x86_64環境で古いバージョンのi386版のsubversionRPMパッケージがインストールされていると、x86_64版のRPMパッケージは更新/インストールされずに、セットアップのSampleProjectの所でこける。

 # PATH=/sbin:/usr/sbin:$PATH bash ./kanon-setup 2>&1 | tee kanon-setup.log
〜略〜
警告: post-commitフックが失敗しました (終了コード: 2)。出力:
TracError: Unsupported version control system "svn": No module named svn

kanonリポジトリi386版のsubversionパッケージをインストールする。

 # echo %_httpproxy 192.168.0.0 >> ~/.rpmmacros
 # echo %_httpport 65536 >> ~/.rpmmacros
 # rpm -Uvh \
 http://kanon.ultimania.org/pkg/centos5/i386/mod_dav_svn-1.6.15-1.el5.i386.rpm \
 http://kanon.ultimania.org/pkg/centos5/i386/subversion-1.6.15-1.el5.i386.rpm
その6:TracGantt(rev:820)の休日登録でエラー

休日登録ページにて「テーブルの作成とデフォルトの休日の設定」をするとエラー。

TypeError: cannot concatenate 'str' and 'NoneType' objects
/opt/kanon/lib/python2.6/site-packages/TracGanttCalendarPlugin-0.6.2_r820-py2.6.egg/ganttcalendar/admin.py
    elif req.args.get('create_table'):
        (loc,enc) = locale.getdefaultlocale()
        self.log.info("loc:"+loc)

同様のエラーが出ている人はいるけど、解決方法は見つからなかった。

どうもapache実行時のロケールが影響しているっぽい感じ。apacheが「LANG=C」設定あたりで動作している?

$ source /opt/kanon/bin/activate
$ python26
>>> import locale
>>> print locale.getdefaultlocale()
('ja_JP', 'UTF8')
$ LANG=C python26
>>> import locale
>>> print locale.getdefaultlocale()
(None, None)
>>> print locale.setlocale(locale.LC_ALL, 'ja_JP.UTF-8')
>>> print locale.getdefaultlocale()
(None, None)
>>> print locale.getlocale()
('ja_JP', 'UTF8')

とりあえず休日の登録が出来れば良いので、自分に都合の良いロケールを設定する処理を追加。

# vi /opt/kanon/lib/python2.6/site-packages/TracGanttCalendarPlugin-0.6.2_r820-py2.6.egg/ganttcalendar/admin.py
elif req.args.get('create_table'):
    (loc,enc) = locale.getdefaultlocale()
    # ここから
    if (loc is None):
       locale.setlocale(locale.LC_ALL, 'ja_JP.UTF-8')
       (loc,enc) = locale.getlocale()
    # ここまで

    self.log.info("loc:"+loc)
    if (loc.find("ko_")==0) or (loc.find("Korean_")==0):
# /etc/init.d/httpd restart
その7:Mercurialのバージョンによるエラー

システムにMercurial 2.3以降のバージョンが入っていると、kanonからMercurialリポジトリにアクセスできない。
対策として、kanonの実行環境にMercurial 2.2をインストールする。

# /opt/kanon/bin/easy_install-2.6 http://mercurial.selenic.com/release/mercurial-2.2.tar.gz
その8:TracGantt(rev:847)のガントチャート表示でエラー
KeyError: 'custom'

実装にバグが有る?

# vi /opt/kanon/lib/python2.6/site-packages/TracGanttCalendarPlugin-0.6.2_r847-py2.6.egg/ganttcalendar/ticketgantt.py
496行目
変更前)
    any(f['name'] == sorted_field and f['custom'] for f in fields):
変更後)
    any(f['name'] == sorted_field and f['value'] for f in fields):

問題??

その1:SELinuxの設定破壊?

kanonスクリプトの中で、/tmpに「/etc/selinux/config」をコピー&編集してから戻す処理があるけど、これが原因?他にも色々とやっていたので、何とも言えませんがメモとして残します。


使っているPCがHP社製でVGANVIDIA社のものを利用しているのですが、このHP製のRHEL5向けNVIDIA VGAドライバーは、SELinuxが有効なっている必要がある。(PermissiveでOK)
kanonインストーラーを実行した後位から、setroubleshootdデーモンが異常終了するようになった気がする。デーモンを再起動しても数分で同じ状況になる。

 # LANG=C /etc/init.d/setroubleshootd status
setroubleshootd dead but pid file exists

「/etc/selinux」のタグを見てみたらおかしくなっていた。SELinuxのコマンドでタグを再設定して対処。

 # /usr/sbin/semanage fcontext -a -t selinux_config_t /etc/selinux/config
 # /sbin/restorecon -F /etc/selinux/config

確認。

 # ls -lZ /etc/selinux
-rw-r--r--  root root system_u:object_r:selinux_config_t config
-r--r--r--  root root system_u:object_r:selinux_config_t config,v
-rw-------  root root system_u:object_r:selinux_config_t restorecond.conf
-rw-r--r--  root root system_u:object_r:selinux_config_t semanage.conf
drwxr-xr-x  root root system_u:object_r:selinux_config_t targeted/