关于python:使用Subversion 1.6安装Trac

Installing Trac with Subversion 1.6

我正在尝试在我的服务器上设置 Trac 并已成功安装、编译字节码并运行 tracd 服务器。唯一的问题是它没有读取我的 SVN 存储库。

我收到的错误是:

Warning: Can't synchronize with the repository (Couldn't open Subversion repository /data1/repos: SubversionException: ("Expected FS format '2'; found format '4'", 160043)). Look in the Trac log for more information.

(是的,我的单个存储库位于一个名为"repos"的文件夹中 - 我没有设置那个位)

trac.ini 看起来像这样:

1
2
repository_dir = /data1/repos
repository_type = svn

我正在运行:Trac 0.11.5、Python 2.4.3、Collabnet SVN 1.6.5、SWIG 1.3.29


您应该确保 python 绑定匹配您的 SVN 版本。

要获得绑定,您可以使用 SVN 源代码并编译package器,安装概述了如何构建该绑定的过程。

首先你必须下载svn源码

在 UNIX 上为 SVN 构建 SWIG 绑定

在构建 swig 绑定之后

Step 1: Install a suitable version of
SWIG (which is
currently swig version 1.3.24 - 1.3.31).

1
* Perhaps your distribution packages a suitable version - if it

does
install it, and skip to the last bullet point in this section.

1
* Go to http://www.swig.org/, download the source tarball, and

unpack.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
* In the SWIG-1.3.xx directory, run ./configure.

    If you plan to build the Python bindings, and have a system
    with more than one version of Python installed, you may need
    to pass

         --with-python=/path/to/correct/python/binary

    to the configure script.  You need Python 2.4 or above.

    If you plan to build the Perl bindings, and have a system
    with more than one version of perl installed, you may need
    to pass

         --with-perl5=/path/to/correct/perl/binary

    to the configure script.  You need Perl 5.8.0 or above.

* Build and install.

    Run 'make && make install'

* To verify you have SWIG installed correctly, run"swig

-version"
from the command line. SWIG should report that it is version
1.3.24
or newer.

然后是python的东西

Step 3: Install Specific Language
Bindings

  • Python

  • Run 'make swig-py' from the top of the Subversion source tree,
    to build the bindings.

    (This will invoke SWIG on the *.i files, resulting in a collection
    of .c source files. It will then compile and link those .c files
    into
    Python libraries.)

  • Run 'make check-swig-py' from the top of the Subversion source
    tree, to test the bindings

  • Run 'make install-swig-py' (as root, typically)
    from the top of the Subversion source tree. This will copy
    your new Python libraries into the appropriate system location.

    Note: If you don't have access to install to Python's site-packages
    directory, you can have the Python modules install to your home
    directory. You can do this by running
    'make install-swig-py swig_pydir=~'.

    Note: If you want to install to an alternate prefix (usually only
    if you are building packages), you can supply the prefix here. An
    example of doing this for building rpms looks like
    'make install-swig-py DESTDIR=$RPM_BUILD_ROOT/usr'.

  • Make sure that whatever directory the bindings got installed
    in
    is in your Python search path. That directory depends on how you
    installed; a typical location is /usr/local/lib/svn-python/.

    There are several ways to do this. See Python's documentation for
    'sys.path' and 'PYTHONPATH'. A nice way to do this is:
    $ echo /usr/local/lib/svn-python \\

    /usr/lib/python2.x/site-packages/subversion.pth

    您可能还需要更新操作系统的动态链接器
    配置以使 Python 能够加载这些新库。一些
    系统这是通过运行 \\'ldconfig\\' 来完成的。


你的 python svn 库更新了吗?听起来它已经过时了。


可能是因为 Subversion Python 绑定是针对过旧版本的 Subversion 编译的,但鉴于 FS 格式 2 是 1.0 之前的版本,可能还有其他问题。您可以像这样获取 Subversion 客户端库版本:

1
2
3
4
5
6
7
>>> import svn.client
>>> svn.client.svn_client_version().major
1
>>> svn.client.svn_client_version().minor
6
>>> svn.client.svn_client_version().patch
5


看起来这些人非常彻底地回答了您的问题,但仅供参考:设置日志文件,以便您可以在下一个问题时阅读它。在你的 trac.ini 某处:

1
2
3
4
5
[logging]
log_file = trac.log
# log_format = <inherited>
log_level = DEBUG
log_type = file

之后,如果可能,尝试将 trac 部署到 apache - 使用 mod_python 或 FastCGI,trac 文档说它比运行 tracd 快得多。