`

Linux建立本地cvs服务器

阅读更多
在RH Linux上快速建立本地CVS服务器的小指南

前提,在安装RH linux的时候,选择了cvs软件包。如果没有安装,当然也可以从网路上下载最新的cvs代码自己编译,或者使用现成的
rpm包进行安装。

下面的工作,集中精力在建立多用户、单cvs仓库的本地cvs服务器。对于如何扩充它,使之成为局域网多用户、多cvs仓库的cvs服务器, 是以后的讨论范围。

简要的步骤:
1、建立cvs用户组
#groupadd cvs

2、建立cvs组的cvsroot用户和所属的目录
#useradd -g cvs -G cvs -d /home/cvsroot cvsroot

3、用cvsroot用户登录,然后改变用户目录的权限,让所有cvs组的成员对它有读写权、初始化cvs仓库
#su - cvsroot
$chmod 775 .
$cvs init

4、使用root或者cvsroot用户登录,添加cvs用户,添加cvs成员的加密密码
#vi /home/cvsroot/CVSROOT/passwd
在这个文件中添加如下形式的多行内容:
usrname1:xxxxxx:cvsroot
usrname2:xxxxxx:cvsroot
其中的xxxxxx是用户usernamex加密的密码,用来生成的perl程序如下:
#vi passwdgen.pl
#!/usr/bin/perl
srand (time());
my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);
print "${crypttext}n";

这个脚本的使用方法是:perl passwdgen.pl <预定密码>,然后将生成的加密密码拷贝到passwd文件中。
修改passwd文件属性,使之只对于cvsroot用户只读
$chmod 400 passwd

5、修改/etc/services文件,加入cvs服务
#vi /etc/services
cvspserver 2401/tcp #pserver cvs service
cvspserver 2401/udp #pserver cvs service (可以不要的,因为我们在这里仅仅使用到了tcp协议)

6、修改inetd提供的服务,由于linux版本之间的差异,在你的系统中可能使用inetd,或者使用xinetd,
比如在RH Linux 7.3中使用的就是xinetd,你可以使用如下的命令来查询
#ps -A |grep inetd

如果使用的是inetd,则仅仅需要修改/etc/inetd.conf,加入如下的内容
cvsserver stream tcp nowait root /usr/bin/cvs cvs --allow-root=/home/cvsroot pserver

如果使用的是xinetd,则需要如下操作:
#cd /etc/xinetd.d
#touch cvspserver
#vi cvspserver
引用
service cvspserver
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root=/home/cvsroot pserver
log_on_failure += USERID
}

可以注意到上面各个参数与单行内容的对应关系。

7、重新启动inetd或者xinetd:
#/etc/init.d/xinetd restart

8、检查cvspserver服务是否已经启动
#netstat -l |grep cvspserver
应该有如下结果:
tcp 0 0 *:cvspserver *:* LISTEN
好了,至此已经在本地建立了一个可以使用的cvs服务器了。
cvs相关网路资源列表
1、http://www.cvshome.org (cvs本家,这里有最新的cvs下载)
2、http://www.loria.fr/cgi-bin/molli/wilma.cgi/rel (这里有很多关于cvs的资源链接)




另一篇文章 (稍后编辑 请见谅)

参考了网上很多CVS建立的方法,其中有一篇《CVS使用速成配置》写得很实用,然而如果按部就班的操作后却总是不成功。后来仔细看了一下,呵呵,有一个很明显也是很小的错误,或者不能称之为错误,应该是网页排版造成的错误,不同之处我用红色字体标出。过程如下:
我使用的是MagicLinux2.0, cvs版本是cvs-1.11.17-4mgc
一、建立cvs服务
1、建立cvs用户组
#>groupadd cvs
2、建立cvs组的用户cvsroot和所属的目录  
#>useradd -g cvs -G cvs -d /cvsroot cvsroot
3、为cvsroot用户添加密码
#>passwd cvsroot
4、改变/cvsroot目录的属性
#>chmod -R 770 /cvsroot
5、改变用户登录
#>su cvsroot
6、创建项目,此处创建两个项目project1和project2
#>cd /cvsroot
#>mkdir project1
#>mkdir project2
7、创建仓库
#>cvs -d /cvsroot/project1 init
#>cvs -d /cvsroot/project2 init
#>chmod -R 770 ./project1/ ./project2/
8、建立CVS服务的启动文件,采用xinetd方式,各位使用MagicLinux的朋友需要注意了,系统服务默认xinetd是没有运行的,需要运行它。 没有的话还需要安装xinetd
#>[Ctrl]+[d]切换到root用户身份
#>cd /etc/xinetd.d
#vi cvspserver

service cvspserver
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
env = HOME=
server = /cvsroot/cvs.run
}

注意:
(1)env = HOME=这一行是为了解决一些cvs操作时产生的读取/root/.cvssignore文件的错误,意思指运行cvs服务时将环境变量HOME置空,这样虽然执行的cvs用户是root,但是没有了HOME环境变量,所以cvs就不会去读/root/.cvssignore这个文件
(2)/cvsroot/cvs.run是一个脚本文件,因为xinetd的server_args长度限制,所以如果想运行很多单个仓库的话,就不如脚本来的方便,脚本如下:
#>vi /cvsroot/cvs.run
#!/bin/bash
/usr/bin/cvs -f --allow-root=/cvsroot/project1 --allow-root=/cvsroot/project2 pserver
此处又要注意了,原文在此处是分行写的(可能是排版的问题,应该连在一起),所以会执行错误,但是xinetd的执行是没有输出信息的,所以我在这里郁闷了有一段时间:(,如果太多的话,可以使用分行符 \

#>chmod +x /cvsroot/cvs.run
最好,执行一下
./cvs.run
如果没有什么特别的信息,应该就没有问题了,[CTRL]+[c]中止它吧
(3)cvspserver这个服务名称要与/etc/services里的名称一致
9、此时可以启动cvs服务了
#>/etc/init/xinetd restart
10、检查是cvspserver服务是否正常启动
#>netstat -al |grep cvspserver
应该有如下结果:
tcp 0 0 *:cvspserver *:* LISTEN

二、用户管理
此时我们已经建立了project1和project2两个仓库,下面我们分别给两个仓库建立cvs用户,此处我们使用cvs的用户认证方式,而不采用Linux的用户。

11、创建可以登录CVS服务器的用户名和密码
#>su cvsroot
#>vi /cvsroot/project1/passwd

wzw:****:cvsroot
brad:****:cvsroot

#>vi /cvsroot/project2/passwd

brad:****:cvsroot

注意:
(1)passwd文件是不存在的,手动建立
(2)此处有project1两个cvs用户wzw和brad,分别映射到linux系统用户cvsroot,project2有一个用户brad,同样映射到cvsroot,登录后的权限即是cvsroot的权限
(3)****为密码,采用cypt加密,可以由下面的脚本文件生成
#> vi /cvsroot/passwd.pl

#!/usr/bin/perl
srand (time());
my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);
print "${crypttext}
";

#>chmod a+x /cvsroot/passwd.pl

15。如果你想生成一个密码是“123456”,则:

#> /cvsroot/passwd.pl “123456”

回车即可得到加密密码,用其替换passwd文件中的****

12、完成了,应该可以了:)
测试一下
#>cvs -d :pserver:brad@192.168.0.39/cvsroot/project1 login
(我的服务器IP为192.168.0.39)
按照提示输入密码,回车
如果没有特别提示信息,呵呵。。。。。OK

感謝《CVS使用速成配置》一文的作者!

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/21471/showart_145489.html
分享到:
评论

相关推荐

    linux cvs的配置全攻略

    CVS 的基本工作思路是这样的:在一台服务器上建立一个仓库,仓库里可以存放许多不同项目的源程序。由仓库管理员统一管理这些源程序。这样,就好象只有一个人在修改文件一样。避免了冲突。每个用户在使用仓库之前,...

    RED HAT LINUX 6大全

    本书全面系统地介绍了Red Hat Linux 6。全书共分为五个部分,包括35章和四个附录。第一部分为Red Hat Linux的介绍和安装;第二部分为服务配置;第三部分为系统管理;第四部分为Linux编程;第五部分为附录。本书内容...

    Linux程序设计 第4版.haozip01

    5.4.4 本地模式 155 5.4.5 特殊控制字符 155 5.4.6 终端速度 158 5.4.7 其他函数 159 5.5 终端的输出 162 5.5.1 终端的类型 163 5.5.2 识别终端类型 163 5.5.3 使用terminfo功能标志 165 5.6 检测击键动作 ...

    Linux程序设计 第4版.haozip02

    5.4.4 本地模式 155 5.4.5 特殊控制字符 155 5.4.6 终端速度 158 5.4.7 其他函数 159 5.5 终端的输出 162 5.5.1 终端的类型 163 5.5.2 识别终端类型 163 5.5.3 使用terminfo功能标志 165 5.6 检测击键动作 ...

    WINCVS和CVSNT安装包

    方法二:通过命令来建立cvs -d /usr/local/cvsroot init 2)配置服务器缓存目录(-T) windows平台下默认:c:\windows\temp linux平台下默认:/tmp 3)配置验证方式: 建立好默认管理目录后,会在其目录里产生...

    Git gui(git客户端)64位 v2.12.0.zip

    与CVS、Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。Git的速度很快,这对于诸如Linux内核这样的大项目来说...

    使用Subversion进行版本控制(针对 Subversion 1.4)

    Linux davfs2 D. 第三方工具 E. Copyright 索引 插图清单 1. Subversion的架构 1.1. 一个典型的客户/服务器系统 1.2. 需要避免的问题 1.3. 锁定-修改-解锁 方案 1.4. 拷贝-修改-合并 方案 1.5. 拷贝-修改-合并 方案...

    Git权威指南PDF完整版

    25.6 建立 Android 代码库本地镜像/ 363 25.7 repo 的命令集/ 365 25.8 repo 命令的工作流/ 370 25.9 好东西不能 Android 独享/ 371 25.9.1 repo+Gerrit 模式/ 371 25.9.2 repo 无审核模式/ 371 25.9.3 改进的 repo ...

    SVN使用手册中文版快速入门

    Linux davfs2 D. 第三方工具 客户端和插件 语言绑定 版本库转化 高级工具 版本库浏览工具 E. 版权 术语表 插图清单 1.1. Subversion的架构 2.1. 一个典型的客户/服务器系统 2.2. 需要避免的问题 2.3. 锁定-修改-...

    SVN使用手册中文版.chm

    Linux davfs2 D. 第三方工具 客户端和插件 语言绑定 版本库转化 高级工具 版本库浏览工具 E. 版权 术语表 插图清单 1.1. Subversion的架构 2.1. 一个典型的客户/服务器系统 2.2. 需要避免的问题 2.3. 锁定-修改-...

Global site tag (gtag.js) - Google Analytics