有许多方式通过互联网(或电子邮件)与 FreeBSD 项目源码特定领域或所有领域保持更新,主要依赖于您的兴趣。 我们提供的主要服务是匿名 CVS、 CVSup,和 CTM。
Warning虽然只更新源码树中的部分是可能的, 唯一被支持的更新过程是更新整个树、并且重编译用户区 (如:在用户空间运行的所有程序,像 /bin 和 /sbin下边的)和内核源码。 只更新源码树中的部分,或只有内核,或只有用户区 (userland) 通常会出现错误。这些问题包括有编译错误、内核崩溃 (kernel panics)、数据出错。
匿名 CVS 和 CVSup 使用 下拉(pull) 模式来更新源代码。 在 CVSup 中, 用户 (或者 cron 叫本) 会调用 cvsup 程序, 后者会同某一个 cvsupd 服务进行交互, 以更新您的文件。 您接到的更新是更新时刻最新的, 并且您只会收到那些需要的更新。 您可以很容易地限制更新的范围, 只更新那些您需要的文件。 服务器端会根据您手头已经有的文件即时地生成更新内容。 匿名 CVS 相对于 CVSup 而言要简单一些, 因为它只是对 CVS 的一种扩展, 让您可以从远程的 CVS 代码库得到更新。 CVSup 相对而言, 要比 匿名 CVS 更有效率, 然而后者却更容易使用。
CTM,在另一方面, 不能交互的把您有的源码与主压缩包里的进行比较, 也不能把它们拉下来。实际上,在主 CTM 机器里, 可以用来识别文件里自上次运行以来发生的变化的脚本, 每天要执行好几次,任何侦测到的变化都会被压缩、 标识上序列号并进行编码以利于能过电子邮件传输 (只能是可打印的ASCII)。一旦接收到, 这些“CTM deltas”就会被传送给 ctm_rmail(1) 工具---可以自动进行解码、校验和应用这些变化到用户的复制的源码里。 这个过程比 CVSup 更为有效, 而且更少占用我们的服务器资源,因为它不仅仅采用 下拉(pull) 模式,还采用 上推(push) 模式。
当然,There are other trade-offs, of course. 如果您不经意删除了您的压缩包的部分内容, CVSup 会检测到并为您重建破坏的部分。 CTM 是不会这样做的, 如果您删除了您的源码树中的某部分(并已不能恢复), 那么您就必须从破坏处 (从最新的CVS “base delta”) 开始,使用 CTM 或 Anonymous CVS 进行重建,仅仅删除坏的数据并再同步。