如何讓 trac 12.2 使用 CollabNet SVN 1.6.17(它有自己的 httpd)在 RHEL5 的 httpd 上工作?
我安裝了 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。
在執行 v2.2.3 的 RHEL5 附帶的 Apache httpd 上
# 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 失敗了。我必須使用 option 配置 httpd
--with-included-apr
,然後一切正常。
您使用的二進製文件是針對較新的 Apache 版本建構的,特別是針對 APR 庫的較新版本而不是您正在使用的 Apache 2.2.3 安裝。除了升級到使用足夠新的 APR 庫的 Apache 版本之外,沒有其他方法可以解決這個問題。