Ubuntu系统下的安装:
如果使用的是Ubuntu操作系统的话安装是非常简单的,只需要执行下面的命令:
$ sudo apt-get update $ sudo apt-get install mercurial mercurial-server
Redhat系统下的安装:
这个相对来说会复杂一些,而且失败率非常高,按照官方文档的方法连第一步都无法通过。后来经过一番漫长的摸索终于安装成功了。这里和大家分享一下:
1、看到解压后的目录中含有Makefile,直接执行make,结果报错,无法成功安装;
2、分析Makefile中的内容,发现整个安装过程包含复制文件、创建用户、初始化用户等几个任务。接下来开始手工安装:
a.首先通过make命令进行文件复制:make pythonbuild pythoninstall b.通过make执行创建用户任务会报错,所以直接使用系统命令创建:useradd hg c.再通过make的inituser对用户进行初始化:make inituser
Mercurial-server安装成功后需要进行一定的配置:
1、切换到hg用户下;
2、创建权限控制的基本文件/etc/mercurial-server/access.conf,并输入以下内容
init user=root/** deny repo=hgadmin write user=users/**
3、将自己的ssh公钥复制到版本库服务器的/etc/mercurial-server/keys/root/user-name/目录中
4、创建~/.ssh目录
5、执行/usr/local/share/mercurial-server/refresh-auth进行权限刷新
6、将~/.ssh目录的权限设置为只读
特别需要注意的一点是:
mercurial-1.9.1与mercurial-server有兼容问题,即会报这样一个错误:
remote: Traceback (most recent call last): remote: File "/usr/local/share/mercurial-server/hg-ssh", line 76, in <module> remote: dispatch.dispatch(['-R', repo, 'serve', '--stdio']) remote: File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 31, in dispatch remote: if req.ferr: remote: AttributeError: 'list' object has no attribute 'ferr' abort: no suitable response from remote hg!
如果出现这个错误,换用1.8.4版本便可以解决。
此外,我在安装mercurial-1.9.1的时候报了一个错误:docutils module is missing。这时需要安装一下这个模块,安装方法如下:
# wget http://prdownloads.sourceforge.net/docutils/docutils-0.7.tar.gz?download # tar -zxf docutils-0.7.tar.gz # cd docutils-0.7 # python setup.py install
参考资料:
http://dev.lshift.net/paul/mercurial-server/docbook.html
http://www.bookandman.com/2010/08/07/mercurial-server/