使用Subversion 1.6安装Trac
我正在我的服务器上设置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 个回答
可能是因为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
你的Python SVN库是最新的吗?听起来好像有点过时了。
你需要确保你的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
在Subversion源代码的根目录下运行'make swig-py',以构建绑定。
(这会对*.i文件调用SWIG,生成一系列.c源文件。然后,它会编译并链接这些.c文件,生成Python库。)
在Subversion源代码的根目录下运行'make check-swig-py',以测试绑定。
在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'。
确保绑定安装的目录在你的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'来完成。