Я установил CollabNetSubversion-client-1.6.17-1.x86_64.rpm, который устанавливает httpd v2.2.19
# /opt/CollabNet_Edge/csvn/bin/httpd -v
Server version: Apache/2.2.19 (Unix)
Я установил Trac-0.12.2.tar.gz.
На Apache httpd, поставляемом с RHEL5, работающим под управлением v2.2.3
# apachectl -v
Server version: Apache/2.2.3
Я установил mod_wsgi, так как это рекомендовано на сайте trac.
Настройки python.conf для httpd 2.2.3:
Alias /trac/chrome/common /var/trac/htdocs/common
Alias /trac/chrome/site /var/trac/htdocs/site
<Directory "/var/trac/htdocs">
Order allow,deny
Allow from all
</Directory>
LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias /trac /var/trac/cgi-bin/trac.wsgi
<Directory /var/trac/cgi-bin>
SetEnv PYTHON_EGG_CACHE /tmp
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
<LocationMatch "/trac/[^/]+/login">
AuthType Digest
AuthName "trac"
AuthDigestDomain /trac
AuthUserFile /etc/httpd/trac.htpasswd
Require valid-user
</LocationMatch>
Я настроил проект trac и настроил его так, чтобы он указывал на существующий репозиторий SVN.
Первая ошибка, указанная в trac.log, была:
ImportError: No module named svn
http://trac.edgewall.org/wiki/TracSubversion#Troubleshooting есть ответ, поэтому я добавил символические ссылки на привязки, которые находятся в области CollabNet:
cd /usr/lib64/python2.4/site-packages
ln -s /opt/CollabNet_Edge/csvn/lib/svn-python/libsvn .
ln -s /opt/CollabNet_Edge/csvn/lib/svn-python/svn .
Следующая ошибка в trac.log (спасибо, что дочитали до этого места - это настоящая проблема):
Trac[svn_fs] INFO: Failed to load Subversion bindings
Traceback (most recent call last):
File "build/bdist.linux-x86_64/egg/trac/versioncontrol/svn_fs.py", line 267, in __init__
File "build/bdist.linux-x86_64/egg/trac/versioncontrol/svn_fs.py", line 68, in _import_svn
File "/opt/CollabNet_Edge/csvn/lib/svn-python/svn/fs.py", line 19, in ?
from libsvn.fs import *
File "/opt/CollabNet_Edge/csvn/lib/svn-python/libsvn/fs.py", line 7, in ?
import _fs
ImportError: /usr/lib64/python2.4/site-packages/libsvn/../../../lib/libsvn_subr-1.so.0:
undefined symbol: apr_memcache_add_server
Я нашел эту страницу, которая говорит об той же проблеме: http://subversion.open.collab.net/ds/viewMessage.do?dsForumId=3&dsMessageId=313639
Предлагаемый совет: «вам, вероятно, нужно использовать наш сервер Apache или обновить свой до версии 2.2.11» (т.е. 2.2.19, чтобы она соответствовала серверу в пакете CollabNet). Что ж, на httpd-сервере, связанном с CollabNet, не установлен mod_wsgi, и я не уверен, как я могу создать такой и добавить его на свой сервер, поэтому мне не нравится этот вариант. Я бы предпочел не обновлять наш основной httpd с 2.2.3 до 2.2.19 - но разве это единственный вариант?
Кстати, я попытался загрузить SVN 1.6.17 и собрать и установить swig-py - для создания привязок, надеясь использовать их с 2.2.3 httpd и trac. Однако я не уверен, что это безопасно / правильно ... SVN каким-то образом привязан к httpd 2.2.19, верно? Во всяком случае, я тоже не мог заставить это работать. Любые советы приветствуются.
ОБНОВИТЬ: Следуя предложению Грэма, я скомпилировал сервер httpd 2.2.19 (чтобы заменить httpd RH5 2.2.3), и теперь все работает. Моя первая попытка с httpd 2.2.19 не удалась. Мне пришлось настроить httpd с опцией --with-included-apr
, то все заработало.
Используемые вами двоичные файлы были созданы для более новой версии Apache и, в частности, более новой версии библиотек APR, чем ваша установка Apache 2.2.3, которую вы используете. Нет никакого способа обойти проблему, кроме обновления до версии Apache, которая использует достаточно новую библиотеку APR.