update/20.09.2009: Проблема успешно решена: на роутере работают и Subversion, и Trac. Текст поста оставлен прежним — для истории.
————————————————————————
Пытаюсь установить и настроить на роутере систему управления версиями Subversion и систему управления проектами Trac. С переменным успехом — получается не всё, хотя раньше удавалось поставить и раскочегарить этот комбайн на компьютерах с FreeBSD.
Роутер — ASUS WL500gPv2
Code:
$ uname -a
Linux router 2.4.20 #18 Sun Mar 30 13:13:29 MSD 2008 mips GNU/Linux
К роутеру подключены флэшка (смонтирована в /opt) и USB-HDD. Каталоги /opt/share/svn и /opt/share/trac — символические ссылки на каталоги, физически хранящиеся на жёстком диске.
Как делал:
0. На роутере уже был установлен сервер lighttpd. Дополнительно поставил:
- py25-genshi - 0.5.1-2 - A toolkit for stream-based generation of output for the web.
- py25-setuptools - 0.6c9-2 - Tool to build and distribute Python packages, enhancement to distutils.
- py25-trac - 0.11.5-1 - An enhanced wiki and issue tracking system for software development projects.
- python25 - 2.5.4-2 - Python is an interpreted, interactive, object-oriented programming language.
- sqlite - 3.6.16-1 - SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database
- svn - 1.6.5-1 - a compelling replacement for CVS
- svn-py - 1.6.5-1 - python SWIG binding for subversion
1. Пока ставил (а поставил не всё сразу — невнимательно читал мануал), сталкивался, например, с такой ошибкой:
Code:
# tracd --help
Traceback (most recent call last):
File "/opt/bin/tracd", line 5, in <module>
from pkg_resources import load_entry_point
Лечится установкой всех необходимых пакетов (в моём случае не хватало py25-setuptools).
2. Сталкивался и с неподходящей локалью:
Code:
# trac-admin . initenv
Traceback (most recent call last):
File "/opt/bin/trac-admin", line 8, in <module>
load_entry_point('Trac==0.11.5', 'console_scripts', 'trac-admin')()
File "/opt/lib/python2.5/site-packages/trac/admin/console.py", line 1314, in run
return admin.onecmd(command)
File "/opt/lib/python2.5/site-packages/trac/admin/console.py", line 129, in onecmd
encoding = locale.getpreferredencoding() # sys.argv
File "/opt/lib/python2.5/locale.py", line 514, in getpreferredencoding
setlocale(LC_CTYPE, "")
File "/opt/lib/python2.5/locale.py", line 478, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
Причина — в переменной окружения LANG, которая равна en_US.UTF8. Можно вручную присвоить ей другое значение, например, en_US.UTF-8, с которым всё работает, но более правильным будет указать это значение в /etc/profile и сохранить файл:
Code:
flashfs save
flashfs commit
flashfs enable
3. Настройка Subversion трудностей не вызвала: есть инструкция, ряд постов на форуме (искать по слову svnserve), да и в svnbook она описана по-русски. Сделал запуском svnserve при загрузке роутера: создал файл /opt/etc/init.d/S66svn
Code:
#!/bin/sh
/opt/bin/svnserve -d -r /opt/share/svn/repos/
и в /usr/local/sbin/post-mount добавил:
Code:
# Subversion
/opt/etc/init.d/S66svn
4. Отдельный сервер tracd запускается, например, командой
Code:
tracd --port 8000 -e /opt/share/trac --auth="*",/opt/share/trac/trac.htdigest,trac
но иногда неожиданно падает, сообщив лишь одно словоДокументация на trac сообщает, что tracd — лёгкий и быстрый сервер, сравнимый по скорости с mod_python, однако неожиданные падения не позволяют спокойно им пользоваться.
5. Под управлением веб-сервера lighttpd trac запускается, но способен вывести лишь страницу со списком доступных проектов. При обращении к любой другой пишет:
Code:
Traceback (most recent call last):
File "/opt/lib/python2.5/site-packages/trac/web/api.py", line 377, in send_error
'text/html')
File "/opt/lib/python2.5/site-packages/trac/web/chrome.py", line 726, in render_template
req.session.pop('chrome.%s.%d' % (type_, i)))
File "/opt/lib/python2.5/site-packages/trac/web/api.py", line 195, in __getattr__
value = self.callbacks[name](self)
File "/opt/lib/python2.5/site-packages/trac/web/main.py", line 264, in _get_session
return Session(self.env, req)
File "/opt/lib/python2.5/site-packages/trac/web/session.py", line 152, in __init__
self.get_session(sid)
File "/opt/lib/python2.5/site-packages/trac/web/session.py", line 173, in get_session
super(Session, self).get_session(sid, authenticated)
File "/opt/lib/python2.5/site-packages/trac/web/session.py", line 48, in get_session
db = self.env.get_db_cnx()
File "/opt/lib/python2.5/site-packages/trac/env.py", line 273, in get_db_cnx
return DatabaseManager(self).get_connection()
File "/opt/lib/python2.5/site-packages/trac/db/api.py", line 85, in get_connection
connector, args = self._get_connector()
File "/opt/lib/python2.5/site-packages/trac/db/api.py", line 130, in _get_connector
raise TracError('Unsupported database type "%s"' % scheme)
TracError: Unsupported database type "sqlite"
В логах веб-сервера (/opt/var/log/lighttpd) ничего интересного: в access.log сообщается о том, что сервер ответил на запрос 500-й ошибкой (Internal server error), а в error.log вообще ничего не добавляется. Создаётся впечатление, что питон не может импортировать модуль для работы с SQLite.
Форум читал, интернеты гуглил, в бубен стучал...
Что делать дальше? Куда глядеть?