在Solaris 10上搭建CVS服务器 想在Solaris 10上搭建一个用于代码管理的CVS服务器?这事儿说复杂也不复杂,按照下面的步骤走,基本上就能搞定。整个过程默认都以root身份来执行,这一点很重要。 第一步:确认系统架构并下载对应软件 首先,你得搞清楚你的服务器到底是Sparc架构还是X
想在Solaris 10上搭建一个用于代码管理的CVS服务器?这事儿说复杂也不复杂,按照下面的步骤走,基本上就能搞定。整个过程默认都以root身份来执行,这一点很重要。
首先,你得搞清楚你的服务器到底是Sparc架构还是X86(i386)架构。打开终端,输入一个简单的命令就知道了:
长期稳定更新的攒劲资源: >>>点此立即查看<<<
# uname -p
根据这个结果,去GNU的CVS稳定版下载页面寻找对应的版本。Sparc架构就选sparc-sunos/目录,X86架构则选x86-sunos/目录。比如,我的X86机器下载的就是这个文件:x86-sunos/cvs-1.11.21-SunOS-5.8-i386.gz。
下载完成后,用gunzip解压,然后把得到的文件挪到/usr/sfw/bin/目录下,并重命名为cvs,别忘了赋予它可执行权限。
# gunzip cvs-1.11.21-SunOS-5.8-i386.gz # mv cvs-1.11.21-SunOS-5.8-i386 /usr/sfw/bin/cvs # chmod a+x /usr/sfw/bin/cvs
到这里,你手上的cvs程序其实已经可以作为客户端直接访问远程的代码库了。但如果想让这台机器成为服务器,还得继续往下走。
所谓的源代码仓库,就是一个专门存放项目所有版本历史的地方。我们先创建一个目录,然后用刚才装好的cvs命令来初始化它。
# mkdir -p /usr/local/newrepos # /usr/sfw/bin/cvs -d /usr/local/newrepos init
这样,/usr/local/newrepos就成了我们未来的代码大本营。
直接让root管理所有代码不安全,最好是创建一个专门的用户和组。创建一个名为cvs的组,再建一个属于这个组的用户cvsadmin,并设置好密码。
# groupadd cvs # useradd cvsadmin # passwd cvsadmin
接着,编辑/etc/group文件,确保cvsadmin用户确实在cvs组里。文件里的相关一行应该是这样的:
cvs::100:cvsadmin
最后,把这个新组的权限赋给整个代码仓库目录。
# cd /usr/local/newrepos # chgrp -R cvs . # chmod ug+rwx .
仓库建好了,现在可以往里面放东西了。假设你本地已经有一个项目,目录是/projects/myproject,那么“导入”过程是这样的:
# cd /projects/myproject # /usr/sfw/bin/cvs -d /usr/local/newrepos import -m "log msg" myproject mycompany start # chgrp -R cvs /usr/local/newrepos
执行成功后,恭喜,你已经可以用cvs命令在本地管理这个项目的版本了。
如果希望团队其他成员能从别的机器访问这个仓库,还需要进行网络服务的配置。
首先,在/etc/services文件里添加一行,定义CVS服务使用的端口:
cvspserver 2401/tcp # cvs server tcp port
然后,在/etc/inetd.conf文件中加入下面这行配置,告诉系统如何启动CVS服务:
cvspserver stream tcp nowait root /usr/sfw/bin/cvs cvs --allow-root=/usr/local/newrepos pserver
接下来,用inetconv命令让系统服务管理器(inetd)接管CVS服务:
# inetconv -i /etc/inetd.conf
命令执行后,你可能会看到类似下面的输出,这表示服务清单已经生成了:
inetconv: Notification: 100235/1 的服务清单已生成为 /var/svc/manifest/network/rpc/100235_1-rpc_ticotsord.xml, 跳过 inetconv: Notification: cvspserver 的服务清单已生成为 /var/svc/manifest/network/cvspserver-tcp.xml, 跳过
有时候,如果xml文件已存在,你可能需要先删除旧的清单文件再重新执行命令,以确保配置被正确导入:
# ls -la /var/svc/manifest/network/cvspserver-tcp.xml # rm /var/svc/manifest/network/cvspserver-tcp.xml # inetconv -i /etc/inetd.conf
最后,启用这个服务:
# svcadm enable svc:/network/cvspserver/tcp:default
你可以用inetadm命令检查服务状态,用telnet测试端口是否通畅:
# inetadm | grep cvs # telnet localhost 2401
CVS有自己独立的密码文件,位于仓库的CVSROOT/passwd。密码需要加密格式,最简单的办法是从/etc/shadow文件里复制对应用户的加密串。
# more /etc/shadow ... (找到cvsadmin用户的加密密码行,例如 cvsadmin:O0QcwHtwGHAO2:14039::::::) # echo "cvsadmin:O0QcwHtwGHAO2" > /usr/local/newrepos/CVSROOT/passwd
注意文件权限问题:如果后续用cvsadmin用户登录时遇到.cvspass文件权限错误,可能需要root帮忙调整一下文件所有者和组。
服务器端都好了,现在换到另一台机器试试。
首次连接需要先登录认证:
# cvs -d :pserver:cvsadmin@[你的服务器IP或主机名]:2401/usr/local/newrepos login
认证成功后,就可以把整个项目“检出”(checkout)到本地了:
# cvs -d :pserver:cvsadmin@[你的服务器IP或主机名]:2401/usr/local/newrepos co myproject
至此,一个功能完整的CVS服务器就配置完成了。整个流程其实非常标准化:前期是搭建环境和初始化仓库,核心在于权限管理和服务配置,最后用客户端验证。如果后续需要添加新用户,只需将他们加入cvs组,并在/usr/local/newrepos/CVSROOT/passwd文件中为其添加一行加密密码即可。虽然CVS如今已不是最主流的版本控制工具,但在特定环境下,它依然是一个稳定可靠的选择。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述