最近在写一个跨平台程序,需要在多个虚拟机和宿主机之间切换,源代码管理就显得尤为重要。于是我在一台XP虚拟机上安装了Visual SVN Server,Windows客户端选择的是TortoiseSVN(乌龟SVN),Ubuntu客户端选择的是RabbitVCS(兔子VCS)。感觉老外给程序取名字的时候很搞笑,难道是“龟兔赛跑”的典故么……
Windows客户端直接安装后无需配置就可以使用;Ubuntu客户端安装参见RabbitVCS的Wiki,完成安装之后,通过菜单检出,发现给出如下错误提示(Ubuntu 10.04和Ubuntu 12.04):
OPTIONS of '<url>': SSL handshake failed: SSL error: Key usage violation in certificate has been detected. (<url>)
其原因是libneon-gnutls库存在BUG,Ubuntu 10.04的解决办法是使用libneon替换:
# 安装 libneon27 库
sudo apt-get install libneon27
# 修改符号链接
sudo mv /usr/lib/libneon-gnutls.so.27 /usr/lib/libneon-gnutls.so.27.old
sudo ln -s /usr/lib/libneon.so.27 /usr/lib/libneon-gnutls.so.27
如果是使用Ubuntu 12.04,使用上述方法不会成功,将直接导致RabbitVCS崩溃,而这似乎又是因为libneon存在BUG,所以我们需要一个更新的版本,在打开页面的底部选择适合你CPU的版本,本文使用的是libneon27_0.29.3-3_i386.deb。
# 如果你已经安装了 libneon27,执行卸载
sudo apt-get remove libneon27
# 安装 libneon27 的依赖库 libssl0.9.8
sudo apt-get install libssl0.9.8
# 安装 libneon27
sudo dpkg -i libneon27_0.29.3-3_i386.deb
# 和上面一样修改符号链接
sudo mv /usr/lib/libneon-gnutls.so.27 /usr/lib/libneon-gnutls.so.27.old
sudo ln -s /usr/lib/libneon.so.27 /usr/lib/libneon-gnutls.so.27
现在,RabbitVCS已经正常了,开始愉快地码代码吧。(注意:执行完上述命令后,可能需要重启nautilus:nautilus -q)
参考文献: