前一段学校里面我原来架设的 FreeBSD CVSup mirror 服务器停止服务了,因为机器被搬走了:p,很想再搞一个,但是可惜校内没有什么我可以用的机器是用 FreeBSD 的,我有权限的机器有 AIX,linux,windows,后想了半天决定在 linux 上装一下试一试,先搜索没找到什么相关资料,本来嘛,没有多少人会有这么 bt 的想法,除了我:p。
试验平台,RedHat Linux 9。因为 AIX 平台我没有 root 权限,为了避免太多的麻烦。。
首先应该安装 cvsup,因为 CVSup mirror 是完全依赖于 cvsup 工作的,安装 cvsup 有 ezm3 的依赖,ezm3 的主页在这里http://www.polstra.com/projects/freeware/ezm3/
新的版本是 1.1,配合新的 cvsup 软件,也应该安装新的 1.1 版本。下载源代码编译安装,不用考虑依赖性,因为没有什么其他东西会依赖 ezm3 和 cvsup 的,所以不用担心会出现什么依赖性问题。编译安装过程中要注意的是 ezm3 的编译安装过程是不可分的,所以需要使用有 root 权限的用户。编译安装需要的时间不短,耐心等一等了。之后编译安装 cvsup,一切都很顺利。
分析 FreeBSD 平台上装好的 cvsup-mirror 以及 cvsup-mirror 的 ports,/usr/local/etc/cvsup 下面应该有这样的文件(夹):
-rwxr-xr-x 1 root root 312 6月 7 20:10 config.sh
-rw-r--r-- 1 root root 154 6月 7 15:51 cvsupd.aclearcase/" target="_blank" >ccess
drwxr-xr-x 2 root root 4096 6月 7 16:22 prefixes
drwxr-xr-x 101 cvsupin cvsupin 4096 6月 7 19:04 sup
drwxr-xr-x 5 cvsupin cvsupin 4096 6月 7 19:57 sup.client
-rw-r--r-- 1 root root 404 6月 7 15:53 supfile
-rwxr-xr-x 1 root root 1574 6月 7 20:11 update.sh
config.sh 和 cvsupd.access 是 ports 中 make 可以生成的,可以直接利用。supfile 和 update.sh 存在于 ports/net/cvsup-mirror/files 文件夹。因为都是脚本文件,所以直接采取复制的政策。
一切都可以参考 ports/net/cvsup-mirror/ 下的相关文件:)
创建需要的目录:
mkdir -p /usr/local/etc/cvsup/prefixes
mkdir -p /usr/local/etc/cvsup/sup.client/distrib
mkdir -p /usr/local/etc/cvsup/sup
mkdir -p /usr/local/etc/rc.d
mkdir -p /home/cvsupmirror/ncvs
mkdir -p /home/cvsupmirror/www
拷贝必须的文件:
cp work/config.sh /usr/local/etc/cvsup/config.sh
cp work/cvsupd.access /usr/local/etc/cvsup/cvsupd.access
cp files/update.sh /usr/local/etc/cvsup/update.sh
cp files/supfile /usr/local/etc/cvsup/supfile
cp files/refuse.self /usr/local/etc/cvsup/sup.client/distrib/refuse.self
cp files/cvsupd.sh /usr/local/etc/rc.d/cvsupd.sh
cp /dev/null /usr/local/etc/cvsup/.start_server
做链接,保证你的 cvsup 的内容放在正确的地方:
按照 config.sh 中的设置,注意必须前后一致。
ln -sf /home/cvsupmirror/ncvs /usr/local/etc/cvsup/prefixes/FreeBSD.cvs
ln -sf /home/cvsupmirror/www /usr/local/etc/cvsup/prefixes/FreeBSD-www.current
ln -sf /usr/local/etc/cvsup/prefixes/.. /usr/local/etc/cvsup/prefixes/distrib.self
ln -sf SKIP /usr/local/etc/cvsup/prefixes/FreeBSD-gnats.current
ln -sf SKIP /usr/local/etc/cvsup/prefixes/FreeBSD-mail.current
添加组 cvsup 和 cvsupin,添加用户 cvsup 和 cvsupin。
都没有 shell,cvsup 没有主目录,cvsupin 建一个在 /home 好了。
mkdir -p /home/cvsupin/.cvsup
touch /home/cvsupin/.cvsup/auth
把 /home/cvsupin 和 /home/cvsupmirror 都给上适当的权限
ll /home
drwx------ 3 cvsupin cvsupin 4096 6月 7 16:12 cvsupin
drwxr-xr-x 4 root root 4096 6月 7 19:06 cvsupmirror
ll /home/cvsupmirror
drwxr-xr-x 14 cvsupin cvsupin 4096 6月 7 19:56 ncvs
drwxr-xr-x 3 cvsupin cvsupin 4096 6月 7 19:57 www
还有 /usr/local/etc/cvsup 里面的两个及其子目录:
drwxr-xr-x 101 cvsupin cvsupin 4096 6月 7 19:04 sup
drwxr-xr-x 5 cvsupin cvsupin 4096 6月 7 19:57 sup.client
设置日志记录:
在 /etc/syslog.conf 中添加:
!cvsupd
$.info /var/log/cvsupd.log
注意 update.sh 需要做些更改才能在 linux 上执行
首先要安装 jot 命令,搜索得到:
http://freshmeat.net/projects/bsd-jot/
提供了 jot 的 rpm,这个命令是 BSD 基本系统的一部分,RedHat 默认是没有的
装好了修改 update.sh 中 jot 的路径,改为 /usr/local/bin/jot
还有这样一行:
lockf -t 0 $ /bin/sh << 'E*O*F'
看上去不是很重要,注释掉了。
E*O*F
也无法识别,注释掉了。
设定 crontab 让他定时执行
23 * * * * /usr/local/etc/cvsup/update.sh
ok,差不多了,有问题再看看日志吧,手动执行 /usr/local/etc/cvsup/update.sh,注意用全路径,呵呵,没有错误更新吧,启动 cvsupd 找个客户连一下,到 /var/log/ 下面看看 log,应该没啥问题。基本的过程是这样了,做完这个好些天了,现在凭印象和系统上装好的样子写,难免有遗漏,有问题告诉我哦,嘿嘿。