如果你只有1、2台机器使用 FreeBSD ,你完全可以使用国内的 freebsdchina.org 的 CVSup 镜像服务器,相对来说,比较稳定,速度也不错;但如果你有十几台机器,甚至上百台机器运行着 FreeBSD ,每台机器都从远程抓取,不仅占用大量带宽,耗费的时间也非常可观了;对于吾等“懒惰者”来说,实在是无法忍受。那么,我们就想办法搭建自己的 CVSup 镜像服务器,节省外部流量,让我们的镜像服务器独自去等候,也独自去勤劳。
第一步,安装 CVSup Mirror 服务器软件:
cd /usr/ports/net/cvsup-mirror/ make
在执行 make 时它会问你许多问题,我们一个个的来回答它:
Master site for your updates [cvsup-master.freebsd.org]?
输入你的 CVSup mirror 的来源,也就是外部网的 cvsup 服务器,最好使用官方站点:cvsup.freebsd.org、cvsup2.freebsd.org,详情请参考 FreeBSD CVSup 文档。由于它是一个中转站,所以速度是否快不是很重要了。
How many hours between updates of your files [1]?
多久上外部的cvsup服务器更新一次。默认的一小时其实已经足够了。
Do you wish to mirror the main source repository [y]?
是否镜像源代码。src 是最该镜像的部分了,当然要 y 了。
Where would you like to put it [/home/ncvs]?
源代码存到哪里。我定位在 /export/cvsupmirror/ncvs 中,一定要找一个大的空闲分区,因为同步完需要占用不少空间。
Do you wish to mirror the installed World Wide Web data [y]?
是否镜像 FreeBSD 的 Web 站点。因为我只想要 Ports 和 src 的同步,所以选择不镜像。如果你的资源充足,你完全可以镜像后运行一个 www.freebsd.org 的镜像站点。
Do you wish to mirror the GNATS bug tracking database [y]?
是否镜像 GNATS 的 bug 跟踪数据库。对于更新来讲,这个不重要,建议选 n,因为实在不常用。
Do you wish to mirror the mailing list archive [y]?
是否镜像 mail list 的文章。建议选 n。
Unique unprivileged user ID for running the client [cvsupin]? Unique unprivileged group ID for running the client [cvsupin]? Unique unprivileged user ID for running the server [cvsup]? Unique unprivileged group ID for running the server [cvsup]?
客户端、服务器使用的用户 ID、组 ID。使用默认的就行了。
Syslog facility for the server log [daemon]?
将服务器日志记入 Syslog 的设施。默认即可。
Maximum simultaneous client connections [8]?
最大的客户连接数。这个看你的内存、CPU 以及硬盘了。我通常设置为 20,是我本地更新机器的可能最大并发。
所有的问题回答完后输入:
make install clean
现在我们已经将 CVSup mirror 装入系统中了,同时它会加入新的用户帐户和用户组,同时在 crontab 中加入新的每小时的同步设置。
我们可以通过 /usr/local/etc/rc.d 中的 cvsupd.sh 来启动或停止 cvsup 服务器。可以通过编辑 /etc/crontab 中的 /usr/local/etc/cvsup/update.sh 命令执行时间设置来改变更新频率。最后,也是最重要的,通过执行 /usr/local/etc/cvsup/update.sh 来即时更新所有的 CVSup 服务器的内容。更新时的最新日志会记入 /var/log/cvsup.log 中,如果你的系统没有自动创建该文件,你创建一个空文件即可:
touch /var/log/cvsup.log
注:
- 第一次进行 update 时需要很久的时间,会从服务器上更新下来很多东西,要有心理准备;
- 如果你的 cvsup 客户端连接上来时报错,那么请检查更新完成了没有,解决办法很简单,接着 update,到全部全了为止;
Recent Comments