我安装了 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。
在 RHEL5 自带的 Apache httpd 上,运行的是 v2.2.3
# apachectl -v
Server version: Apache/2.2.3
我安装了 mod_wsgi,因为这是 trac 网站推荐的。
2.2.3 httpd 的 python.conf 设置:
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 包中的服务器)。好吧,CollabNet 捆绑的 httpd 服务器没有安装 mod_wsgi,而且我不确定如何构建它并将其添加到他们的服务器中——所以我不喜欢那个选项。我宁愿不将我们的主要 httpd 从 2.2.3 更新到 2.2.19——但这真的是我唯一的其他选择吗?
顺便说一句,我尝试下载 SVN 1.6.17 并构建和安装 swig-py -- 来构建绑定,希望将它们与 2.2.3 httpd 和 trac 一起使用。但是,我不确定这是否安全/正确... SVN 不知何故与 2.2.19 httpd 绑定,对吧?无论如何,我也无法让它工作。任何建议都值得赞赏。
更新:根据 Graham 的建议,我编译了一个 2.2.19 httpd 服务器(用于替换 RH5 2.2.3 httpd),现在一切正常。我第一次尝试使用 2.2.19 httpd 失败了。我必须使用选项配置 httpd --with-included-apr
,然后一切正常。
答案1
您使用的二进制文件是针对较新的 Apache 版本构建的,具体而言是针对较新的 APR 库版本构建的,而不是您使用的 Apache 2.2.3 安装。除了升级到使用足够新的 APR 库的 Apache 版本外,没有其他方法可以解决这个问题。