Svn

如何讓 trac 12.2 使用 CollabNet SVN 1.6.17(它有自己的 httpd)在 RHEL5 的 httpd 上工作?

  • October 20, 2011

我安裝了 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 版本之外,沒有其他方法可以解決這個問題。

引用自:https://serverfault.com/questions/323023