merucrial-server install in linux

Mercurial是一个分布式的的版本控制工具。其自身提供了一个web服务端,但是没有权限控制功能。Mercurial-server可以弥补这个不足,它通过ssh来控制不同版本库的访问权限。需要注意的是 Mercurial-server只能安装在linux系统上

Ubuntu系统下的安装:
如果使用的是Ubuntu操作系统的话安装是非常简单的,只需要执行下面的命令:
Java代码 复制代码  收藏代码
  1. $ sudo apt-get update   
  2. $ sudo apt-get install mercurial mercurial-server  
$ sudo apt-get update
$ sudo apt-get install mercurial mercurial-server


Redhat系统下的安装:
这个相对来说会复杂一些,而且失败率非常高,按照官方文档的方法连第一步都无法通过。后来经过一番漫长的摸索终于安装成功了。这里和大家分享一下:
1、看到解压后的目录中含有Makefile,直接执行make,结果报错,无法成功安装;
2、分析Makefile中的内容,发现整个安装过程包含复制文件、创建用户、初始化用户等几个任务。接下来开始手工安装:
Java代码 复制代码  收藏代码
  1. a.首先通过make命令进行文件复制:make pythonbuild pythoninstall   
  2. b.通过make执行创建用户任务会报错,所以直接使用系统命令创建:useradd hg   
  3. c.再通过make的inituser对用户进行初始化:make inituser  
a.首先通过make命令进行文件复制:make pythonbuild pythoninstall
b.通过make执行创建用户任务会报错,所以直接使用系统命令创建:useradd hg
c.再通过make的inituser对用户进行初始化:make inituser
===> python install setup.py 记得老的版本,先安装python,再用此命令安装mercurial-server

Mercurial-server安装成功后需要进行一定的配置:
1、切换到hg用户下;
2、创建权限控制的基本文件/etc/mercurial-server/access.conf,并输入以下内容
Java代码 复制代码  收藏代码
  1. init user=root/**   
  2. deny repo=hgadmin   
  3. write user=users/**  
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有 兼容问题,===> 在项目应用的项目软件经常遇到hg的版本匹配,不合适的需要换一换,也许就解决了。即会报这样一个错误:
Python代码 复制代码  收藏代码
  1. remote: Traceback (most recent call last):   
  2. remote:   File "/usr/local/share/mercurial-server/hg-ssh", line 76in <module>   
  3. remote:     dispatch.dispatch(['-R', repo, 'serve''--stdio'])   
  4. remote:   File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 31in dispatch   
  5. remote:     if req.ferr:   
  6. remote: AttributeError: 'list' object has no attribute 'ferr'  
  7. abort: no suitable response from remote hg!  
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。这时需要安装一下这个模块,安装方法如下:
Java代码 复制代码  收藏代码
  1. # wget http://prdownloads.sourceforge.net/docutils/docutils-0.7.tar.gz?download   
  2. # tar -zxf docutils-0.7.tar.gz   
  3. # cd docutils-0.7  
  4. # python setup.py install  
# 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
Mercurial是一个分布式的的版本控制工具。其自身提供了一个web服务端,但是没有权限控制功能。Mercurial-server可以弥补这个不足,它通过ssh来控制不同版本库的访问权限。需要注意的是 Mercurial-server只能安装在linux系统上

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
===> python install setup.py 记得老的版本,先安装python,再用此命令安装mercurial-server

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有 兼容问题,===> 在项目应用的项目软件经常遇到hg的版本匹配,不合适的需要换一换,也许就解决了。即会报这样一个错误:
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/

猜你喜欢

转载自haiouc.iteye.com/blog/1746518