一、CVS服务器安装及初始配置
1、
CVS服务器的安装
安装RPM包: #yum install cvs*
查看cvs安装情况:
#rpm -qa|grep cvs
#which cvs
/usr/bin/cvsFedora
上的CVS依赖于xinetd服务,所以要安装xinetd:
#yum install xinetd*
检查安装情况:
#rpm -qa|grep xinetd
2、建立cvs用户组:
#/usr/sbin/groupadd cvs
3、建立cvs组的cvsroot用户和所属的目录/home/cvsroot:
#/usr/sbin/useradd -g cvs -G
cvs -d /home/cvsroot cvsroot
4、为
cvsroot用户添加密码:
#passwd cvsroot
5、
改变 /cvsroot/ 的目录属性:
因为是在root用户下间的该目录,他的属主和属组都是root,这里我们
要将其属主改为cvsroot,属组改为
cvs,保证cvs组的用户对该目录有相应的权限。
#chown
-R cvsroot.cvs /home/cvsroot/
#chmod –R 775 /home/cvsroot
6、 改变用户登陆身份:
# su cvsroot
bash-3.2$
7、
设置全局变量CVSROOT
#vim /etc/bashrc
加入:
export CVSROOT=/home/cvsroot:$CVSROOT
检查一下变量设置:
#echo $CVSROOT
/home/cvsroot/
8、开始建立仓库:
#cvs –d /home/cvsroot/ init
9、建立CVS服务启动文件,使用xinetd方式:
#[Crtl]+[d] //切换到root用户身份
#cd /etc/xinetd.d
目录下已经存在一个名为cvs的文件,内容如下:
- # default: off
- # description: The CVS service can record the history of your source \
- # files. CVS stores all the versions of a file in a single \
- # file in a clever way that only stores the differences \
- # between versions.
- service cvspserver
- {
- disable = yes
- port
= 2401
- socket_type
= stream
- protocol = tcp
- wait = no
- user
= root
- passenv
= PATH
- server
= /usr/bin/cvs
- env
= HOME=/var/cvs
- server_args
= -f --allow-root=/var/cvs pserver
- # bind = 127.0.0.1
- }
复制这份文件为cvspserver,并改为如下: #cp cvs cvspserver
#vim cvspserver
- # default: off
- # description: The CVS service can record the history of your source \
- # files. CVS stores all the versions of a file in a single \
- # file in a clever way that only stores the differences \
- # between versions.
- service cvspserver
- {
- disable = no
- port
= 2401
- socket_type
= stream
- protocol = tcp
- wait = no
- user
= root
- passenv
= PATH
- server
= /usr/bin/cvs
- env
= HOME=/home/cvsroot
- server_args
= -f --allow-root=/home/cvsroot pserver
- }
注:由于xinetd的server_args长度限制,当你想运行很多的单个仓库的时候,可以这么做:
#vim
cvspserver
- service cvspserver
- {
- disable = no
- port = 2401
- socket_type = stream
- protocol = tcp
- wait = no
- user = root
- passenv = PATH
- server = /home/cvsroot/cvs.run
- env = HOME=/home/cvsroot
-
- }
然后编写启动CVS的脚本cvs.run
#vim /cvsroot/cvs.run
- #!/bin/bash
- /usr/bin/cvs -f --allow-root=/home/cvsroot/ pserver
-
#chmod 755 /home/cvsroot/cvs.run10、加入cvs服务:
#vim /etc/services
在文件的最后加入以下两行:
cvspserver 2401/tcp #pserver cvs service
cvspserver 2401/udp
#pserver cvs service
11、重启cvs服务:
#/etc/init.d/xinetd restart
12、检查cvspserver服务是否已经启动:
#netstat -l |grep cvspserver
应该有如下结果:
tcp
0 0 *:cvspserver *:* LISTEN
二、CVS服务的用户管理:
上面我们已经建立了CVS仓库,下面我们给
仓库建立cvs用户。
13、创建可以登陆cvs服务器的用户名和密码:
#su cvsroot
$su
口令:
#vim /home/cvsroot/CVSROOT/passwd
为新用户my_name和your_name设置密码,加入以下两行:
my_name:*********:cvsroot
your_name:*************:cvsroot
这两个文件的意思是有my_name和your_nameg两个cvs用户,同时拥有cvsroot的使用权限,登陆后 的权限是cvsroot权限。
注意:这里的cvs用户和系统用户是不同的。
14、 *********为密码,由以下文件生成:
#vim
/home/cvsroot/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";
#chmod a+x
/home/cvsroot/passwdgen.pl
这个文件是功能是给你想设的密码加密,变为暗码。如果你想生成一个密码是“123456”,则:
# ./passwdgen.pl “123456”
回车即可得到加密暗码:ZaNGzWEtXCZZI , 用其替换passwd文件中的********
15、
cvs的服务器端现在已经全部安装完成了!
最后,试着登陆一下:
#cvs -d
:pserver:my_name@192.168.1.111:/home/cvsroot login
敲入命令回车后提示输入my_name的密码,你按照自己设置的密码输入,如果没有什么错误信息出现就是成功了。
-------------------------------------------
可能出现的错误:
-------------------------------------------
CVS
pserver安装好后,连接的时候,会显示错误信息:
cvs [login
aborted]: reading from server: Connection reset by pserver...
这个问题的原因很可能有:
1.
xinetd.d的配置上:
在cvspserver文件中,port =2401 没有设置
或者
server = /usr/local/bin/cvs这个cvs的执行路径设置错了(正确的路径可以通过运行#which cvs命令得到)
或
者
env = /var/cvs没有改成你设置好的目录,我这里是/home/cvsroot
2. cvspsever服务没有添加进/etc/services中
注意:
1.密码生成程序gen.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 gen.pl "password"
2.导入工程出现错误
cvs add: resources.ap_ added independently by second party
删除CVS关联,重新加入到CVS
阅读(2415) | 评论(0) | 转发(0) |