ubuntu下安装和配置CVS

来源:互联网 发布:租用阿里云vps 编辑:程序博客网 时间:2024/04/30 17:47
此日志是转别人的:
网上ubuntu下安装CVS的资料挺多,不过尝试过之后基本都上跑不起来。经过了一下午+一晚上的努力,总算是配置成功了,我把详细过程和中间遇到的问题都记录下来,于是就有了这篇文章。

cvs的安装方式大致有两种
一种是cvs+cvsd,另一种是cvs+xinetd,我选择的是cvs+xinetd,这种做法比较节省资源,xinetd是一个后台服务管理程序,除了管理cvs之外还可以管理其它的后台服务,理论上讲会比较节省资源一些。

环境

os:ubuntu 9.04
cvs:(CVS) 1.12.13 (client/server)
xinietd:2.3.14

安装过程如下

1.安装相关包
1.1.安装cvs和xinetd

jim@jim-laptop:~$ sudo apt-get install cvs cvsd xinetd
jim@jim-laptop:~$......
jim@jim-laptop:~$......
jim@jim-laptop:~$......

注意:刚才安装cvsd并不是需要cvsd在后台运行,而是因为cvsd自带的几个小工具挺好使,可以省去不少力气,装完了把cvsd服务删除就可以了,如下所示

jim@jim-laptop:~$ sudo /etc/init.d/cvsd stop
jim@jim-laptop:~$ sudo rm /etc/init.d/cvsd
jim@jim-laptop:~$


1.2.安装文件介绍
cvs会安装到这么几个地方

/usr/bin/cvs //执行文件
/etc/cvsd/ //cvsd存放配置文件的地方,因为没有用到cvsd,因此这个目录可以删除,不删留着也不影响
/var/lib/cvsd //cvs的主目录,所有的执行文件,临时文件都在这里,也是RootJail变量默认指向的目录,我建议不要改默认的RootJail,如果希望把repository放到别的地方,可以考虑使用符号连接的办法实现。


2.生成库
2.1.生成repositories目录
/var/lib/cvsd是默认的起始目录,代码库应该放到这里。
注意:如果你希望把代码库放到别处,我建议你可以在cvs搭建成功之后用符号链接迁移到别处,目前暂时别乱改,否则出现问题不容易找到解决办法。

假设代码库的名字叫做 cvs-root

jim@jim-laptop:~$ sudo mkdir /var/lib/cvsd/cvs-root //创建代码库目录
jim@jim-laptop:~$ sudo chown jim:cvsd /var/lib/cvsd/cvs-root -R //修改目录的所有者为当前用户
jim@jim-laptop:~$ sudo chmod ug+rwx /var/lib/cvsd/cvs-root -R //修改cvs-root目录的读写权限,设置为除了所有者之外,别的用户也可以读写


ok,现在/var/lib/cvsd/cvs-root已经拥有了写入权限,可以执行个小测试

jim@jim-laptop:~$ touch /var/lib/cvsd/cvs-root/a
jim@jim-laptop:~$

没提示出错就说明可以了

2.2.初始化repositories
执行如下代码

jim@jim-laptop:~$ cvs -d /var/lib/cvsd/cvs-root init
jim@jim-laptop:~$ ls /var/lib/cvsd/cvs-root
CVSROOT


2.3.为cvs-root添加用户并初始化密码

jim@jim-laptop:~$ cvsd-passwd /var/lib/cvsd/cvs-root jim
/usr/sbin/cvsd-passwd: adding user 'jim' to '/var/lib/cvsd/cvs-root/CVSROOT/passwd'
Enter new password: <输入密码123>
Retype new password: <重复输入密码123>
jim@jim-laptop:~$


2.4.配置代码库的config文件
我这里执行完init之后,cvs-root/CVSROOT里的文件都是只读的,必须增加改变文件属性才能编辑

jim@jim-laptop:~$ sudo chmod +rw /var/lib/cvsd/cvs-root/CVSROOT/*
jim@jim-laptop:~$
jim@jim-laptop:~$ gedit /var/lib/cvsd/cvs-root/CVSROOT/config


增加内容如下
SystemAuth=no
PamAuth=no
LockDir=/var/lib/cvsd/tmp/locked #锁目录,这是个绝对路径


创建刚才的锁目录

jim@jim-laptop:~$ sudo mkdir /var/lib/cvsd/tmp/locked
jim@jim-laptop:~$

3.配置xinet.d的配置文件
xinet.d的配置文件在/etc/xinetd.d/目录下,在这个目录下找找有没有一个cvs文件,如果已经有了就直接编辑它,如果没有就创建它,
内容如下

service cvspserver
{ #这个花括号一定要另起一行,否则会解析错误
#端口号
port = 2401
socket_type = stream
#协议
protocol = tcp
#用户名(这里一定要是root或者cvs默认组cvsd,不然会出错!)
user = cvsd
wait = no
type = UNLISTED
#cvs执行文件路径
server = /usr/bin/cvs
#这个是cvs服务参数,其中的/var/lib/cvsd/cvs-root是代码库的绝对路径,日后访问cvs的时候也要提供这个路径(如果嫌这个名字太长,可以使用符号链接解决名字太长的问题)
server_args = -f --allow-root /var/lib/cvsd/cvs-root pserver
disable = no
}

注意:

a.花括号要独占一行
b.等号前后要有空格
c.如果你和我一样喜欢使用gedit编辑cvs文件的话,就得小心在保存的时候gedit会自动创建一个名为cvs~的备份文件,这样在启动xinetd服务的时候会出现地址已经被占用的警告信息(系统日志中可以看到),解决办法就是把这个cvs~备份文件删除。


5.重启xinetd服务
在重启之前要先看看/etc/services服务里有没有开启cvs服务端口

jim@jim-laptop:~$ cat /etc/services |grep 2401
cvspserver 2401/tcp # CVS client/server operations
cvspserver 2401/udp
jim@jim-laptop:~$

ok,已经配置好端口了,现在可以重启xinetd服务了,输入如下命令


jim@jim-laptop:~$ sudo /etc/init.d/xinetd restart
* Stopping internet superserver xinetd [ OK ]
* Starting internet superserver xinetd [ OK ]
jim@jim-laptop:~$


6.连接测试
首先查看端口是否开启

jim@jim-laptop:~$ telnet localhost 2401
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.


出现上面的字样说明cvs服务器端口已经打开了,如果出现Connection refused的提示,可能表示xinetd配置失败,建议看看系统日志,从中会得到帮助。

试试使用cvs登录

jim@jim-laptop:~$ cvs -d :pserver:jim@localhost:/var/lib/cvsd/cvs-root login
Logging in to :pserver:jim@localhost:2401/var/lib/cvsd/cvs-root
CVS password:
jim@jim-laptop:~$

如果什么提示都不出就说明连接成功了

7.把冗长的/var/lib/cvsd/cvs-root改用符号链接简化
讲述一下如何将冗长的/var/lib/cvsd/cvs-root简化成/cvs-root
在xinetd的cvs配置文件 /etc/xinetd.d/cvs

....
server_args = -f --allow-root /var/lib/cvsd/cvs-root pserver
....

server-args参数指向的绝对路径就是连接测试时输入的冗长的代码路路径,把它修改成下面的样子

....
server_args = -f --allow-root /cvs-root pserver
....


然后执行下面的命令

jim@jim-laptop:/$ sudo ln -s /var/lib/cvsd/cvs-root cvs-root
jim@jim-laptop:/$


ok,改完了,再测试一下

jim@jim-laptop:~$ cvs -d :pserver:jim@localhost:/var/lib/cvsd/cvs-root login
Logging in to :pserver:jim@localhost:2401/cvs-root
CVS password:
jim@jim-laptop:~$

ok,连接成功了

8.设置读写权限
还没完事,目前cvs还只是能登录,如果执行cvs add update等操作的时候会出现一错误提示

cvs add "blueprint-demo"
cvs add: cannot mkdir /var/lib/cvsd/cvs-root/blueprint-demo: Permission denied

这是因为目录还没有设置读写权限,执行下面的脚本就可以了


jim@jim-laptop:~$ sudo usermod -a -G cvsd jim //将jim用户加入cvsd用户组
jim@jim-laptop:~$ sudo chmod ug+rwx /var/lib/cvsd/tmp -R //设置临时目录的写入权限
jim@jim-laptop:~$ sudo chmod ug+rwx /var/lib/cvsd/cvs-root -R //设置工程目录的写入权限
jim@jim-laptop:~$ sudo chmod ug+rwx /var/lib/cvsd/cvs-root/CVSROOT/* //设置工程CVSROOT具有读写权限

0 0
原创粉丝点击