cvsup 常用配置文件supfile
cvsup 常用配置文件supfile
首先,我们描述一下 supfile 的整体构成。
supfile 是个文本文件。注释用 # 开头,至行尾有效。 空行和只包含注释的行会被忽略。
每个保留行描述一批用户希望接收的文件。 每行以 “collection”,由服务器端定义的合理的文件分组,的名字开头。 collection 的名字告诉服务器您想要的文件。 collection 名字结束或者有更多的字段,用空格分隔。 这些字段回答了上面列出的问题。字段类型有两种:标记字段和值字段。 标记字段由独立的关键字组成,比如, delete 或者 compress。值字段也用关键字开头, 关键字后面跟 = 和第二个词而没有空格。 例如,release=cvs 是一个值字段。
一个典型的 supfile 往往接收多于一个的 collection。创建 supfile 的一种方式是明确的为每一个 collection 指定相关的字段。然而,这样使得 supfile 的行变得特别长,很不方便, 因为 supfile 中的所有 collection 的大部分 字段都是相同的。 CVSup 提供了一个默认机制来避免这些问题。用特定的伪 collection 名 *default 开头的行可以被用来设置标记和值为 supfile 中随后的 collection 中的默认值。 默认值可以通过为这个 collection 自身指定不同的值来对单个的 collection 覆盖设置, 也可以在 mid-supfile 中通过附加的 *default 行改变或扩充。
知道了这些,我们现在就可以开始创建一个 用于接收和升级 FreeBSD-CURRENT 主源代码树的 supfile 文件了。
您想接收哪些文件?
通过 CVSup 可用的文件组织成叫做 “collections” 的名称组。这些可用的 collection 在 随后的章节 中描述。在这个例子里, 我们希望接收 FreeBSD 系统的完整的主代码树。 有一个单独的大的 collection src-all 让我们完成这个。 创建我们的 supfile 的第一步, 我们简单的列出这些 collection,每个一行(在这个例子里, 只有一行):
src-all
您想要他们的 哪个版本?
通过 CVSup,您实际上可以接收 曾经存在的源代码的任何版本。这是有可能的,因为 cvsupd 服务器直接通过 CVS 仓库工作,那包含了所有的版本。您可以 用 tag= 和 date= 值字段 指定一个您想要的版本。
警告: 仔细的正确指定任何 tag= 字段。有一些 tag 只对特定的 collection 文件合法。 如果您指定了一个不正确的或者 拼写错误的 tag,CVSup 会删除您可能不想删除的文件。 特别地,对 ports-* collection 只使用 tag=.。
tag= 字段在仓库中表示为一个符号标签。有两种标签,修订标签和分支标签。 修订标签代表一个特定的修订版本。 它的含义是一成不变的。分支标签,另一方面,代表给定开发线上给定时间的最新修订。因为分支标签不代表一个特定的修订版本, 它明天的含义就可能和今天的有所不同。
包含了用户可能感兴趣的分支标签。 当在 CVSup 的配置文件中指定标签的时候,必须用 tag= 开头 (RELENG_4 会变成 tag=RELENG_4)。 记住只有 tag=. 可以用于 Ports Collection。
警告: 注意像看到的那样正确的输入标签名。 CVSup 不能辨别合法和不合法标签。 如果您拼写错了标签名, CVSup 会像您指定了一个没有任何文件的合法标签一样工作, 那会删除您已经存在的代码。
当您指定一个分支标签的时候,您通常会收到开发线上文件的最新版本。如果您希望接收一些过时的版本,您可以通过用 date= 值字段指定一个日期来做到。 cvsup(1) 手册页解释了如何来做。
对于我们的示例来说,我们希望接收 FreeBSD-CURRENT。 我们在我们的 supfile 的开头添加这行:
*default tag=.
有一个重要的特例, 如果您既没指定 tag= 字段也没指定 date= 字段的情况。这种情况下, 您会收到直接来自于服务器 CVS 仓库的真实的 RCS 文件, 而不是某一特定版本。 开发人员一般喜欢这种操作模式。通过在他们的系统上维护一份仓库自身的副本, 他们可以浏览修订历史以及检查文件过去的版本。然而,这个好处是以大量的磁盘空间为代价的。
您想从哪里获取他们?
我们使用 host= 字段来告诉 cvsup 从哪里获取更新。 任何一个 CVSup 镜像站点都可以,虽然您应该选择一个离您比较近的站点。 在这个例子里我们将使用一个虚拟的 FreeBSD 发布站点, cvsup99.FreeBSD.org:
*default host=cvsup.FreeBSD.org
您需要在运行 CVSup 之前把这个改成一个实际存在的站点。在任何 cvsup 运行的特定时刻, 您都可以在命令行上使用 -h hostname 选项来覆盖主机设置。
您想把它们放在您自己机器的什么地方?
prefix= 字段告诉 cvsup 把接收的文件放在哪里。 在这个例子里,我们把源代码文件直接放进我们的主源代码树, /usr/src。 src 目录已经隐含在我们选择接收的 collection 里了, 所以正确的写法是:
*default prefix=/usr
cvsup 在哪里维护它的状态文件?
CVSup 客户端在被叫做 “base” 的目录里维护了几个状态文件。这些文件帮助 CVSup 更有效的工作,通过跟踪您已经接收到哪些更新的方式。 我们将使用标准的 base 目录, /var/db:
*default base=/var/db
如果您的 base 目录还不存在,现在最好创建它。 如果 base 目录不存在,cvsup 客户端会拒绝工作。
其他的 supfile 设置:
在 supfile 中有一些其他选项需要介绍一下:
*default release=cvs delete use-rel-suffix compress
release=cvs 显示服务器应该从 FreeBSD 的主 CVS 仓库中获取信息。 事实上总是这样的,但是也有可能会超出这个讨论的范围。
delete 给 CVSup 权限删除文件。您应该总是指定这个,这样 CVSup 可以保证您的源代码树完全更新。CVSup 很小心的只删除那些不再依赖的文件。 您拥有的任何额外的文件会被严格的保留。
use-rel-suffix 是 … 不可思议的。 如果您真的想了解它,查看 cvsup(1) 手册页。 否则,就指定而不用担心这个。
compress 启用 gzip 风格的信道压缩。 如果您的网络连接是 T1 或者更快, 您可能不想使用压缩。 否则,它非常有帮助。
以下是常用的
一.如果只更新ports,可以用以下的supfile
*default host=cvsup2\.FreeBSDChina.org
*default base=/var/db
*default prefix=/usr
*default releases=cvs tag=.
*default delete use-rel-suffix
ports-all
二、如果只更新SRC,可以用以下SUPFILE
*default host=cvsup.FreeBSDChina.org
*default base=/var/db
*default prefix=/usr
*default releases=cvs tag= # 希望使用的branch名字,例如RELENG_4_10, RELENG_4_8, RELENG_5_2
*default delete use-rel-suffix
src-all
三、如果两个都想呢?呵呵
*default host=cvsup2.FreeBSDChina.org
*default base=/var/db
*default prefix=/usr
*default releases=cvs tag= # 希望使用的branch名字,例如RELENG_4_10, RELENG_4_8, RELENG_5_2
*default delete use-rel-suffix
src-all
ports-all tag=.
四、如果你只更新某一部分,需要自己构建ports/INDEX。
下一篇我将介绍如何运行在图形界面和非图形界面
