首先安装了RHEL 4。默认情况下,如果你选中了RHEL的开发包,CVS就会默认安装了。Redhat的CVS是把客户端和服务端放在了一个rpm包中了。害我找了半天的cvsd L
如果是编译安装,需要你在/etc/service文件中添加下面的两行:
cvspserver 2401/tcp # cvs client/server operations
cvspserver 2401/udp # cvs client/server operations
由于我是RHEL自带安装的,所以这两行在暗转过完成后就有了。
之后需要我们配置xinetd
在/etc/xinetd.d/目录中创建一个文件,文件名随意。推荐:cvspserver。这个名字会作为你的CVS服务的名字出现在System Services配置列表中【输入setup命令然后选择System Services】。
在这个文件中输入:
service cvspserver
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/bin/cvs
env = HOME=
server_args = -f --allow-root=/cvs/cvsroot pserver
log_on_success += USERID
log_on_failure += USERID
}
注意:
1. 这里不要修改什么格式,每个参数行前最好不要有空格。参数行中等号的两侧各有一个空格!千万不要弄错了,我就在这上面花费了两天的功夫;
2. 最后一行中的pserver要放在行末。不然会出现—allow-root 错误
3. 如果有多个CVS库,可以这样写:server_args = -f –allow-root=/cvs/cvsroot –allow-root=/cvs/cvsrootold pserver 这里,每个库之间都有一个空格格开。不然就会有 no such repository错误
完成之后,输入 /etc/init.d/xinetd restart 启动服务;
使用netstat –l 看看cvs服务是否已经启动。
下面就是服务端的设置问题了。
#useradd –d /cvs/cvsroot cvs //创建一个cvs用户,home是/cvs/cvsroot 参见xinetd定义
#groupadd cvs //创建一个cvs用户组
#usermod –G cvs cvs //设置用户cvs的属组是cvs
#chmod 755 –R /cvs/cvsroot //设置cvsroot目录让其他的用户都能访问
#su – cvs
$cvs –d /cvs/cvsroot init //初始化cvsroot目录
$exit
-d 后面跟要初始化的数据库路径,要绝对路径,init参数告诉cvs命令对-d后面的目录进行初始化。初始化的结果是在数据库目录下创建一个CVSROOT子目录,下面包括了cvs库使用的配置文件。
接下来是创建用户。由于前面指定了服务器的安全模式为pserver,这种模式的用户认证是建立在一个passwd文件之上的。进入你的cvs数据库的目录下,如/cvs/cvsroot,再进入CVSROOT子目录,在这个目录下创建一个passwd文件,文件的内容为:
user1:XXXXXX:luser1
user2:XXXXXX:luser1
user3:XXXXXX:luser2
其中userX为登录cvs的用户名,XXXXXX为加密后的用户密码,luserX为linux本地用户,这个本地用户要求至少有对cvs数据库目录的读权限。简单地说,用户以userX身份在客户端登录,服务器验证密码通过后使用后面跟着的luserX用户对cvs数据库文件进行存取。luserX对cvs数据库目录的存取权限决定了用户使用cvs的权限。创建passwd文件有一个简单的方法,就是使用apache的htpasswd命令创建用户及其密码的文件,这个命令创建的文件没有上面要求的linux本地用户,手工添加上适当的本地用户后就可以作为passwd文件使用了。
有了用户后,就可以使用客户端进行cvs的操作了。首先要进行一些配置。前面说了,在cvs数据库目录下的CVSROOT子目录存放的是这个库的配置文件,其中有些是有必要进行重新配置的。
先用客户端登录,取出CVSROOT的所有内容。在客户端编辑文件config,把SystemAuth=no前面的#号去掉,这个配置项禁止了客户使用linux用户名进行登录。修改LockDir的内容,给它指定一个路径并且注意给这个路径合适的权限。这个LockDir是cvs用来存放lock文件的。config文件其他的配置项就不需要改了。修改完成后,在客户端把config文件commit,提交到数据库中,cvs发现配置文件被修改,就会自动重新加载配置文件的内容,使配置生效。