RHEL4にTracインストール
yumやapt-getなし。全部手動で入れる。
躓いたところは以下の二点(最終的にはまだあった)。
前者は/usr/localにインストールし直した。
後者は
Creating and Initializing Project Failed to create environment. global name 'sqlite' is not defined Traceback (most recent call last): File "/usr/local/lib/python2.5/site-packages/trac/scripts/admin.py", line 613, in do_initenv options=options) File "/usr/local/lib/python2.5/site-packages/trac/env.py", line 145, in __init__ self.create(options) File "/usr/local/lib/python2.5/site-packages/trac/env.py", line 250, in create DatabaseManager(self).init_db() File "/usr/local/lib/python2.5/site-packages/trac/db/api.py", line 71, in init_db connector.init_db(**args) File "/usr/local/lib/python2.5/site-packages/trac/db/sqlite_backend.py", line 121, in init_db cnx = sqlite.connect(path, timeout=int(params.get('timeout', 10000))) NameError: global name 'sqlite' is not defined
こんなエラーが出る。sqlite変数が見つからないようだ。
python-sqliteのバインディングが上手く行っていないのではないかと予想する。
sqlite_backend.pyのソースは
try: import pysqlite2.dbapi2 as sqlite have_pysqlite = 2 except ImportError: try: import sqlite3 as sqlite have_pysqlite = 2
となっている事から、pyqsliteのインポートに失敗しているのだと思われる。
行き詰り気味になり、pysqliteの動作確認用のソースでもないかな、とググると
ソフト/Bug Tracking/trac/RedHat - discypus
が出てきた。ビンゴ!素晴らすぎる…。
消えたら困るので引用しておきます。
$ cd scripts
テスト(Step 4: Test Your pysqlite Installation より)
$ cat test-pysqlite #!/usr/bin/env python from pysqlite2.test import test test() $ ./test-pysqlite Traceback (most recent call last): File "./test-pysqlite", line 2, in ? from pysqlite2.test import test File "/usr/local/lib/python2.3/site-packages/pysqlite2/test/__init__.py", line 25, in ? from pysqlite2.test import dbapi, types, userfunctions, factory, transactions File "/usr/local/lib/python2.3/site-packages/pysqlite2/test/dbapi.py", line 26, in ? import pysqlite2.dbapi2 as sqlite File "/usr/local/lib/python2.3/site-packages/pysqlite2/dbapi2.py", line 32, in ? from pysqlite2._sqlite import * ImportError: libsqlite3.so.0: cannot open shared object file: No such file or directory失敗した。libsqlite3.so.0の位置を/etc/ld.so.confに登録する。
libsqlite3.so.0の場所を探す。(/usr/local/libだろうけど、ついでにupdatedbも実行しておく)
# updatedb $ locate libsqlite3.so.0 /usr/local/lib/libsqlite3.so.0.8.6 /usr/local/lib/libsqlite3.so.0 ★ /home/admin/trac/sqlite-bld/.libs/libsqlite3.so.0.8.6 /home/admin/trac/sqlite-bld/.libs/libsqlite3.so.0/etc/ld.so.confを編集
/usr/kerberos/lib /usr/X11R6/lib /usr/lib/qt-3.0.5/lib /usr/lib/sane /opt/kakadu /usr/local/lib ★この行を追加ldconfigを実行
# /sbin/ldconfig再テスト。OK
http://discypus.jp/wiki/?%A5%BD%A5%D5%A5%C8%2FBug%20Tracking%2Ftrac%2FRedHat#n5008889
これでtrac-adminでプロジェクトを作成する事ができたので、tracdでサーバを起動し、アクセスしてみる。
が、何も表示されない。
ターミナルの方で、以下のような例外を確認。
Exception happened during processing of request from ('192.168.1.1', 11194) Traceback (most recent call last): File "/usr/local/lib/python2.5/SocketServer.py", line 464, in process_request_thread self.finish_request(request, client_address) File "/usr/local/lib/python2.5/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/local/lib/python2.5/SocketServer.py", line 522, in __init__ self.handle() File "/usr/local/lib/python2.5/BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "/usr/local/lib/python2.5/site-packages/trac/web/wsgi.py", line 174, in handle_one_request gateway.run(self.server.application) File "/usr/local/lib/python2.5/site-packages/trac/web/wsgi.py", line 87, in run response = application(self.environ, self._start_response) File "/usr/local/lib/python2.5/site-packages/trac/web/standalone.py", line 88, in __call__ return self.application(environ, start_response) File "/usr/local/lib/python2.5/site-packages/trac/web/main.py", line 363, in dispatch_request env_paths) File "/usr/local/lib/python2.5/site-packages/trac/web/main.py", line 456, in send_project_index req.hdf = HDFWrapper(loadpaths) File "/usr/local/lib/python2.5/site-packages/trac/web/clearsilver.py", line 135, in __init__ raise TracError, "ClearSilver not installed (%s)" % e TracError: ClearSilver not installed (No module named neo_cgi)
ClearSilverが入っていないとな。
インストールはしたんだが…。
とりあえず再インストールでもしようと思い、./configureで実行結果を確認。
checking for python includes... found /usr/include/python2.3
と、ここで違和感が。
Tracが参照してるのはpython2.5の方で、実際にインストールしたpythonのバージョンは2.5。
どうやらpython2.3が既に入っており、そちらを参照してしまっているようだ。
/usr/local/includeよりも/usr/includeを先に見てしまうのね。
whichだと/usr/localの方を見てるんだけどなぁ…。
インストール - cooldaemonの備忘録
を参考に、オプションを追加し、
./configure --disable-perl --with-python=/usr/local/bin/python
に変更。
checking for python includes... found /usr/local/include/python2.5 Disabling perl module checking for ruby... found /usr/local/bin/ruby
python2.5を見てくれるようになった。
ついでにrubyもdisableにする事に。
./configure --disable-ruby --disable-perl --with-python=/usr/local/bin/python
checking for python includes... found /usr/local/include/python2.5 Disabling perl module Disabling ruby module
これでmake installしてみる。
成功を確認。
再度tracdを起動し、アクセス。
今度はトップ画面が見れた。ClearSilverのエラーも起こらない。
プロジェクト一覧と言う簡素な画面からプロジェクト名(TracTest)のリンクをクリック。
見慣れたTracのトップ画面が表示された。
が…
Trac detected an internal error:
またまたエラー。画面下部にスタックトレースがある。
Python Traceback Traceback (most recent call last): File "/usr/local/lib/python2.5/site-packages/trac/web/main.py", line 406, in dispatch_request dispatcher.dispatch(req) File "/usr/local/lib/python2.5/site-packages/trac/web/main.py", line 191, in dispatch chosen_handler = self._pre_process_request(req, chosen_handler) File "/usr/local/lib/python2.5/site-packages/trac/web/main.py", line 263, in _pre_process_request chosen_handler = f.pre_process_request(req, chosen_handler) File "/usr/local/lib/python2.5/site-packages/trac/versioncontrol/api.py", line 73, in pre_process_request self.get_repository(req.authname).sync() File "/usr/local/lib/python2.5/site-packages/trac/versioncontrol/api.py", line 94, in get_repository ((self.repository_type,)*2)) TracError: Unsupported version control system "svn". Check that the Python bindings for "svn" are correctly installed.
python-svnのバインディングができていない模様。
ソフト/Bug Tracking/trac/RedHat - discypus
を参考にpythonを対話的に起動してバインディングを確認。
Python 2.5.1 (r251:54863, Apr 26 2007, 16:32:28) [GCC 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import svn Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named svn >>>
入ってない…。
http://subversion.tigris.org/project_packages.html
と言うわけでここからrpmパッケージをダウンロードしてインストール。
http://the.earth.li/pub/subversion/summersoft.fay.ar.us/pub/subversion/latest/rhel-4/i386/
rpm -i subversion-python-1.4.3-1.i386.rpm
ところがこれもpython2.3の方にバインドされる…。
rpm -ql subversion-python ... /usr/local/lib/python2.3/site-packages/libsvn/_delta.la ...
これに関しては二次情報がなかったので悪戦苦闘。
rpmのmanを見ながら色々なオプションを試した結果、
rpm -ivh --relocate /usr/lib/python2.3=/usr/local/lib/python2.5 subversion-python-1.4.3-1.i386.rpm
と言う非常に強引な方法でインストール成功。
ほんとにいいのか。もっとスマートな方法があると思うんだけどなぁ…。
で、再度またtracdから確認。
ようやくエラーもなく、見慣れたトップ画面が表示された!
感想
いやー、大変だった。
でもネット上で悪戦苦闘している人がたくさんいるお陰で効率の悪い英語の一次情報をほとんど参考せずにトラブル対応できた。
感謝ですなぁ…。スキルも英語力もない人間からすると本当にありがたい。