使用Subversion 1.6安装Trac

1 投票
4 回答
3106 浏览
提问于 2025-04-15 16:03

我正在我的服务器上设置Trac,已经成功安装、编译了字节码并运行了tracd服务器。唯一的问题是,它无法读取我的SVN仓库。

我收到的错误信息是:

警告:无法与仓库同步(无法打开Subversion仓库/data1/repos:SubversionException: ("预期的文件系统格式是'2';但发现的格式是'4'",160043))。请查看Trac日志以获取更多信息。

(是的,我的单个仓库在一个叫“repos”的文件夹里 - 这部分我没有设置)

我的trac.ini文件看起来是这样的:

repository_dir = /data1/repos
repository_type = svn

我正在运行的版本是:Trac 0.11.5,Python 2.4.3,Collabnet SVN 1.6.5,SWIG 1.3.29

4 个回答

2

可能是因为Subversion的Python绑定是针对一个太旧的Subversion版本编译的。不过,由于文件系统格式2是在1.0之前的版本,所以也有可能是其他地方出了问题。你可以这样获取Subversion客户端库的版本:

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

你的Python SVN库是最新的吗?听起来好像有点过时了。

3

你需要确保你的Python绑定和SVN版本匹配。

要获取这个绑定,你可以使用SVN的源代码并编译包装器,安装说明提供了构建这个绑定的过程概述。

首先,你需要下载SVN的源代码

在UNIX上为SVN构建SWIG绑定

在构建SWIG绑定之后

步骤1:安装合适版本的SWIG(目前是SWIG版本1.3.24到1.3.31)。

* Perhaps your distribution packages a suitable version - if it

如果安装成功,就跳到这一部分的最后要点。

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

解压。

* 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"。SWIG应该会报告它的版本是1.3.24或更新的版本。

然后是Python的相关操作

步骤3:安装特定语言的绑定

  • Python

    1. 在Subversion源代码的根目录下运行'make swig-py',以构建绑定。

      (这会对*.i文件调用SWIG,生成一系列.c源文件。然后,它会编译并链接这些.c文件,生成Python库。)

    2. 在Subversion源代码的根目录下运行'make check-swig-py',以测试绑定。

    3. 在Subversion源代码的根目录下运行'make install-swig-py'(通常需要以root身份),这会将你新生成的Python库复制到合适的系统位置。

      注意:如果你没有权限安装到Python的site-packages目录,你可以将Python模块安装到你的主目录。你可以通过运行'make install-swig-py swig_pydir=~'来实现。

      注意:如果你想安装到其他前缀(通常只有在构建包时才需要),你可以在这里指定前缀。比如,构建rpm时可以这样做:'make install-swig-py DESTDIR=$RPM_BUILD_ROOT/usr'。

    4. 确保绑定安装的目录在你的Python搜索路径中。这个目录取决于你是如何安装的;一个典型的位置是/usr/local/lib/svn-python/。

      有几种方法可以做到这一点。请查看Python的文档,了解'sys.path'和'PYTHONPATH'。一个简单的方法是:

      $ echo /usr/local/lib/svn-python \

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

你可能还需要更新操作系统的动态链接器配置,以便Python能够加载这些新库。在某些系统上,可以通过运行'ldconfig'来完成。

撰写回答