CVSup 是一个用于从远程服务器主机上的主 cvs(1) 版本库分发和更新版本库的软件包。OpenBSD 用位于加拿大的一个中心开发机器上的 CVS 版本库维护源代码。使用 CVSup 的 OpenBSD 用户可以容易的保证他们的版本库最新。
CVSup 使用所谓拉模型执行更新。在拉模型中,客户端在需要的时候, 询问服务器以获取更新数据。服务器被动的等待客户端发出更新请求, 因此所有更新由客户端发起,服务器不会主动发送更新数据。用户必须手工运行 CVSup 客户端获取更新数据,或者设置一个 cron(8) 任务定期自动运行。
术语 CVSup,大写指代整个软件包。 它的主要组件是运行在每个用户机器上的客户端软件 cvsup(或者另一个实现 csup) 和运行于每个 OpenBSD CVSup 镜像站点的服务器软件 cvsupd。
OpenBSD 项目当前有 6 个主要的版本库:
CVS 是用来管理 OpenBSD 源代码的源代码控制系统。它在这里有更详细的描述。注意 CVS 和 CVSup 是完全不同的程序。尽管 CVS 可以用来访问远程文件, 但是它没有针对通过网络分发整个版本库优化,CVSup 为此提供了数量级上的优化。
因为 CVSup 用 Modula-3 语言编写,从源代码构建 CVSup 是很麻烦的事情。 lang/ezm3 提供了一个很小的 Modula-3 编译器和运行库,它只适用于使用 Modula-3 仅是为了构建 CVSup 的用户。然而,如果你只关心运行 CVSup,建议你从 FTP 镜像站点下载软件包,而不是从 net/cvsup 构建它。当前 OpenBSD 只移植了 Ezm3 这个 Modula-3 实现,因此 CVSup 只能用于 i386 平台。
或者,使用 C 编写的 csup 包,它提供了兼容的客户端,编译简单,体积小,速度快,维护活跃。
想进一步了解 CVSup,参见其 项目主页。
为了使用 CVSup 镜像 OpenBSD 版本库,可以使用下述配置文件:
# Defaults that apply to all the collections
*default host=anoncvs1.usa.openbsd.org
*default base=/var
*default prefix=/cvs
*default umask=002 release=cvs delete use-rel-suffix
# If your network link is a T1 or faster, comment out the following line.
*default compress
OpenBSD-all
#OpenBSD-ports
#OpenBSD-src
#OpenBSD-www
#OpenBSD-xenocara
#OpenBSD-x11
#OpenBSD-xf4
它告诉 cvsup 从 anoncvs1.usa.openbsd.org 更新全部 OpenBSD 版本库,使用 umask(2) 设置同组用户有写本地版本库的权限。
假设该文件另存为 cvs-supfile,可以用下面的命令调用 cvsup:
cvsup cvs-supfile
然而在批处理模式,需要用下面的命令:
cvsup -g -L 2 cvs-supfile
现在你有了 CVS 版本库的本地副本,可以在本地象操作远程版本库一样操作, 例如检出、更新,或者其它的 CVS 操作。例如:
cvs -d/cvs checkout src -P
cvs -d/cvs up -Pd
cvs -d/cvs diff -u file.c
关于 CVS 操作更详细的信息位于 FAQ5,
获取适当的源代码 和 cvs(1)
手册页。
除了使用 CVSup 获得版本库,然后使用 CVS 之外,你还可以通过在文件 supfile 的 *default 或集合的选项中增加 tag 或 date 让 CVSup 在检出模式运行,这样就不需要用 CVS 检出了,还可以节约大量磁盘空间, 缺陷是你无法再使用本地版本库来快速执行 CVS 操作。特别指出,你还可以使用光盘中的源代码来有效的加速同步操作。
可以使用下述配置文件更新你的 ports 源代码:
# Defaults that apply to all the collections
*default host=anoncvs1.usa.openbsd.org
*default base=/var
*default prefix=/usr
*default umask=002 release=cvs delete use-rel-suffix
# If your network link is a T1 or faster, comment out the following line.
*default compress
# Ports Collection.
OpenBSD-ports tag=.
可以使用任意的 CVS 符号标签。一个点"."代表最新的开发版本, 也就是主分支中所有文件的最新版本。注意由于 CVSup 不能辨别标签的有效性, 所以要指定一个存在的标签,尝试用不存在的标签同步现有的源代码, 将会删除所有文件。
或者,你也可以使用关键字 date=[cc.]yy.mm.dd.hh.mm.ss 来用日期选择版本。所有的 17 或 20 个字符必须按照显示的格式给出。 对于2000年或其后的日期,要指定世纪 cc。对于更早的时间, 只需要指定最后两个数字 yy。你也可以同时使用 tag 和 date。
下述 CVSup 服务器可用:
located in Oslo, Norway;
maintained by Anders Nordby.
Updated every 3 hours.
Available collections:
| OpenBSD-src | - The src repository | |
| OpenBSD-ports | - The ports repository | |
| OpenBSD-www | - The www repository | |
| OpenBSD-x11 | - The XFree86-3 repository | |
| OpenBSD-xf4 | - The XFree86-4 repository | |
| OpenBSD-xenocara | - The Xenocara repository | |
| OpenBSD-all | - All OpenBSD repositories |
located in St. Petersburg State University, St. Petersburg, Russia;
maintained by Dima Veselov.
Updated every 4 hours.
Available collections:
| OpenBSD-ports | - The ports repository |
located at Otemachi, Tokyo, Japan;
maintained by CVSup Administrator.
Updated every 3 hours.
Available collections:
| OpenBSD-src | - The src repository | |
| OpenBSD-ports | - The ports repository | |
| OpenBSD-www | - The www repository | |
| OpenBSD-x11 | - The XFree86-3 repository | |
| OpenBSD-xf4 | - The XFree86-4 repository | |
| OpenBSD-xenocara | - The Xenocara repository | |
| OpenBSD-all | - All OpenBSD repositories |
located at National Chiao-Tung University, Taiwan;
maintained by Yi-Jheng Lin.
Updated every 2 hours.
Available collections:
| OpenBSD-src | - The src repository | |
| OpenBSD-ports | - The ports repository | |
| OpenBSD-www | - The www repository | |
| OpenBSD-x11 | - The XFree86-3 repository | |
| OpenBSD-xf4 | - The XFree86-4 repository | |
| OpenBSD-all | - All OpenBSD repositories |
located in Germany
maintained by Armin Wolfermann.
Updated every 3 hours.
Available collections:
| OpenBSD-src | - The src repository | |
| OpenBSD-ports | - The ports repository | |
| OpenBSD-www | - The www repository | |
| OpenBSD-x11 | - The XFree86-3 repository | |
| OpenBSD-xf4 | - The XFree86-4 repository | |
| OpenBSD-xenocara | - The Xenocara repository | |
| OpenBSD-all | - All OpenBSD repositories |
注意: 如果列在这里的你的服务器的信息不准确或者不清楚,请联系 www@openbsd.org。
你可能想用 traceroute(8) 来找出距离你最近的服务器。当发现服务器有问题请报告给我们的维护者。
在2010年4月,CVS 版本库的大小是:
| OpenBSD-ports | - 425MB | |
| OpenBSD-src | - 1684MB | |
| OpenBSD-www | - 401MB | |
| OpenBSD-xenocara | - 723MB | |
| OpenBSD-xf4 | - 580MB | |
| OpenBSD-x11 | - 200MB |
还有一个额外的 620MB 目录 CVSROOT。全部版本库的大小为 4.2GB,以每年 400MB 的速度增长。
重要说明: 有一些与加密软件相关的问题每个人都应该注意:
OpenBSD 源代码出自加拿大。根据加拿大个人研究和加拿大输出控制列表的描述, 从加拿大向世界各地输出加密软件是合法的。
然而,如果你不在美国或加拿大,你不应该从位于美国的 CVSup 服务器上获取 OpenBSD 源代码的加密软件部分。可能有问题的文件是...
由于美国 ITAR 军用品列表,加密软件只能从美国输出到加拿大。
OpenBSD 项目正在寻求更多的 CVSup 服务器 -- 如果你有兴趣,请与 www@openbsd.org 联系以获得详细的配置信息。