【 tulaoshi.com - Linux 】
前一段学校里面我原来架设的 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.accessdrwxr-xr-x 2 root root 4096 6月 7 16:22 prefixesdrwxr-xr-x 101 cvsupin cvsupin 4096 6月 7 19:04 supdrwxr-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.shconfig.sh 和 cvsupd.access 是 ports 中 make 可以生成的,可以直接利用。supfile 和 update.sh 存在于 ports/net/cvsup-mirror/files 文件夹。因为都是脚本文件,所以直接采取复制的政策。一切都可以参考 ports/net/cvsup-mirror/ 下的相关文件:)创建需要的目录:mkdir -p /usr/local/etc/cvsup/prefixesmkdir -p /usr/local/etc/cvsup/sup.client/distribmkdir -p /usr/local/etc/cvsup/supmkdir -p /usr/local/etc/rc.dmkdir -p /home/cvsupmirror/ncvsmkdir -p /home/cvsupmirror/www拷贝必须的文件:cp work/config.sh /usr/local/etc/cvsup/config.shcp work/cvsupd.access /usr/local/etc/cvsup/cvsupd.accesscp files/update.sh /usr/local/etc/cvsup/update.shcp files/supfile /usr/local/etc/cvsup/supfilecp files/refuse.self /usr/local/etc/cvsup/sup.client/distrib/refuse.selfcp files/cvsupd.sh /usr/local/etc/rc.d/cvsupd.shcp /dev/null /usr/local/etc/cvsup/.start_server做链接,保证你的 cvsup 的内容放在正确的地方:按照 config.sh 中的设置,注意必须前后一致。ln -sf /home/cvsupmirror/ncvs /usr/local/etc/cvsup/prefixes/FreeBSD.cvsln -sf /home/cvsupmirror/www /usr/local/etc/cvsup/prefixes/FreeBSD-www.currentln -sf /usr/local/etc/cvsup/prefixes/.. /usr/local/etc/cvsup/prefixes/distrib.selfln -sf SKIP /usr/local/etc/cvsup/prefixes/FreeBSD-gnats.currentln -sf SKIP /usr/local/etc/cvsup/prefixes/FreeBSD-mail.current添加组 cvsup 和 cvsupin,添加用户 cvsup 和 cvsupin。都没有 shell,cvsup 没有主目录,cvsupin 建一个在 /home 好了。mkdir -p /home/cvsupin/.cvsuptouch /home/cvsupin/.cvsup/auth把 /home/cvsupin 和 /home/cvsupmirror 都给上适当的权限ll /homedrwx------ 3 cvsupin cvsupin 4096 6月 7 16:12 cvsupindrwxr-xr-x 4 root root 4096 6月 7 19:06 cvsupmirrorll /home/cvsupmirrordrwxr-xr-x 14 cvsupin cvsupin 4096 6月 7 19:56 ncvsdrwxr-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 supdrwxr-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.shok,差不多了,有问题再看看日志吧,手动执行 /usr/local/etc/cvsup/update.sh,注意用全路径,呵呵,没有错误就更新吧,启动 cvsupd 找个客户连一下,到 /var/log/ 下面看看 log,应该没啥问题。基本的过程就是这样了,做完这个好些天了,现在凭印象和系统上装好的样子写,难免有遗漏,有问题告诉我哦,嘿嘿。