我有一台 Debian Squeeze 服务器,其中安装了 Apache2 和 Subversion。Subversion 版本是 1.6.12 (r955767)。它来自 Debian 存储库。但最近我从源代码将 Subversion v1.7.7 安装了到 /usr/local/,现在在控制台中我看到
root@test:~# svn --version
svn, version 1.7.7 (r1393599)
compiled Dec 6 2012, 17:28:19
...
root@test:~# svnadmin --version
svnadmin, version 1.7.7 (r1393599)
compiled Dec 6 2012, 17:28:19
...
root@test:~# svnserve --version
svnserve, version 1.7.7 (r1393599)
compiled Dec 6 2012, 17:28:19
...
但是当我通过 Apache 访问该服务器时,我得到了以下服务器签名
Powered by Subversion version 1.6.12 (r955767).
Apache 虚拟主机配置是
<VirtualHost XXX.XXX.XXX.XXX:80>
ServerAdmin [email protected]
ServerName svn.XXXXXXXXX.XX
HostnameLookups Off
UseCanonicalName Off
ServerSignature On
<IfModule mod_userdir.c>
UserDir public_html
Include /etc/apache2/mod_userdir.conf
</IfModule>
<Directory "/var/svn/">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<Location />
DAV svn
SVNParentPath /var/svn/repos
AuthType Basic
AuthName "Advance Digital Subversion Repository."
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>
</VirtualHost>
所以问题是:Apache 如何选择要使用的 Subversion 版本?如何更改此设置?
答案1
您还需要升级 Apache webDav / SVN 模块(libapache2-svn),因此您要么需要获取 Apache 源代码并编译 Apache 和 lib 的更新版本,要么 apt-get 获取最新的 Apache、SVN 和 libapache2-svn 包。
答案2
如果你仔细观察/etc/apache2/mods-enabled/dav_svn.load
,你会看到
LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so
LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so
您可以确认这些指向 Debian 的 Subversion 1.6.12 模块:
$ strings /usr/lib/apache2/modules/mod_dav_svn.so | grep 'Powered by'
<hr noshade><em>Powered by <a href="http://subversion.tigris.org/">Subversion</a> version 1.6.12 (r955767).</em>
您应该进行修改/etc/apache2/mods-available/dav_svn.load
以指向您为 Apache 自建的 Subversion 模块。