用cvsup同步源代码并更新系统
(以FREEBSD5_3 STABLE版为例)
我们随时都可以用cvsup与中央cvsup服务器,或它的某个镜像同步自己FreeBSD机器上的全部源代码。cvsup允许您一次获取整个源码集合,以后只取更改过的部分。许多人从cron运行cvsup,以保持他们的源码自动更新。源代码更新包含两个部分,一是系统源代码,二是ports树的源代码。
对于系统源代码,CVS(并行版本控制系统)包含CURRENT版和STABLE版两个树。FreeBSD STABLE版系统源代码的 cvsup配置文件是/usr/share/examples/cvsup/stable-supfile,该文件默认是升级所有的系统源代码,一般情况只需改*default host项,让cvsup到离我们近的cvsup镜像服务器下载源代码。ports树的源代码的cvsup配置文件是 /usr/share/examples/cvsup/ports-supfile,可根据自己的需要指定更新那些分支的源代码。ports树只有一个版本,不象系统源代码有CURRENT版和STABLE版之分。为了保证源码之间的依赖性好采用src-all和ports-all方式更新所有源码。
1. 复制配置文件到/etc目录(便于管理)
# cp /usr/share/examples/cvsup/ports-supfile /etc
# cp /usr/share/examples/cvsup/stable-supfile /etc
# chmod 755 /etc/ports-supfile
# chmod 755 /etc/stable-supfile
注:chmod 数字前加0代表目录,不加0代表文件
2. 编辑配置文件
# vi /etc/stable-supfile
-------------------------------------------------
*default host=cvsup.FreeBSDchina.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_5_3
*default delete use-rel-suffix
*default compress
src-all
-------------------------------------------------
# vi /etc/ports-supfile
-------------------------------------------------
*default host=cvsup.FreeBSDChina.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix
*default compress
ports-all
-------------------------------------------------
注:
①default host=
用来指定离我们近的cvsup镜像服务器
②prefix=告诉 cvsup
把接收的文件放在哪里,一般在/usr/src目录里。
③*default base=/var/dbCVSup
客户端在被叫做 “base” 的目录里维护了几个状态文件。这些文件帮助 CVSup 更有效的工作,通过跟踪您已经接收到哪些更新的方式。如果 base 目录不存在,cvsup 客户端会拒绝工作。
④tag=用来指定版本含义如下:
tag=RELENG_3指定版本为:FreeBSD 3-STABLE
tag=RELENG_4指定版本为:FreeBSD 4-STABLE
tag=RELENG_5_3指定版本为:FreeBSD 5_3-STABLE
⑤*default release=cvs delete use-rel-suffix compress
release=cvs 显示服务器应该从 FreeBSD 的主 CVS 仓库中获取信??
delete 给 CVSup 权限删除文件。您应该总是指定它,这样 CVSup 可以保证您的源代码树完全更新。CVSup 很小心的只删除那些不再依赖的文件。您拥有的任何额外的文件会被严格的保留。
use-rel-suffix 是 ... 不可思议的。 如果您真的想了解它,查看 cvsup(1) 手册页。否则,指定而不用担心这个。
compress 启用 gzip 风格的信道压缩。
⑥CVSup 文件 collection
CVSup 可用的文件 collection 是分级组织的。有几个大的 collection,然后它们有分成更小的子 collection。接收一个大的 collection 等同于接收它的每一个子 collection。 collection 的等级关系在下面列表中通过缩进的使用反映出来。常用的 collection 是 src-all,和 ports-all。其它的 collection 只被有着特定目的的小部分人使用,有些站点可能不全部支持。
cvs-all release=cvs (FreeBSD 主 CVS 仓库,包含密码系统的代码)
distrib release=cvs (FreeBSD 发行版本和镜像相关的文件)
doc-all release=cvs (FreeBSD 使用手册和其它文档的源代码。其中不包含 FreeBSD web 站点的文件)
ports-all release=cvs (FreeBSD Ports Collection)
如果您不想升级全部的 ports-all(整个 ports 树),而只是使用下面列出的一个子集,请确保您总是升级了 ports-base子collection!无论何时在 ports 构建下层构造有所改变的时候都会通过 ports-base 表现出来,因此,如果您只升级了“实际的”ports 而他们使用了一些新的特性,有极大的可能会因一些神秘的错误信息而编译失败。这种情况下,首先要做的事情是确保您的 ports-base 子 collection 更新到新。
ports-archivers release=cvs (存档工具)
ports-astro release=cvs (天文相关的 ports)
ports-audio release=cvs (声音支持)
ports-base release=cvs (Ports Collection 构建下部构造)
位于 /usr/ports 的 Mk/ 和 Tools/ 子目录的各种各样的文件。无论您更新 Ports Collection 的任何部分的时候,您都应该同时更新这个子 collection。
ports-benchmarks release=cvs (基准)
ports-biology release=cvs (生物学)
ports-cad release=cvs (计算机辅助设计工具)
ports-chinese release=cvs (中文语言支持)
ports-comms release=cvs (通信软件)
ports-converters release=cvs (字符编码转换)
ports-databases release=cvs (数据库)
ports-deskutils release=cvs (计算机发明前常出现在桌面上的东西)
ports-devel release=cvs (开发工具)
ports-dns release=cvs (DNS 相关软件)
ports-editors release=cvs (编辑器)
ports-emulators release=cvs (其它操作系统的模拟器)
ports-finance release=cvs (货币,金融相关应用程序)
ports-ftp release=cvs (FTP 客户端和服务器端工具)
ports-games release=cvs (游戏)
ports-german release=cvs (德语支持)
ports-graphics release=cvs (图形图像工具)
ports-hungarian release=cvs (匈牙利语言支持)
ports-irc release=cvs (Internet 多线交谈(IRC)工具)
ports-japanese release=cvs (日语支持)
ports-java release=cvs (Java 工具)
ports-korean release=cvs (韩国语言支持)
ports-lang release=cvs (编程语言)
ports-mail release=cvs (邮件软件)
ports-math release=cvs (数值计算软件)
ports-mbone release=cvs (MBone 应用程序)
ports-misc release=cvs (杂样工具)
ports-multimedia release=cvs (多媒体软件)
ports-net release=cvs (网络软件)
ports-news release=cvs (USENET 新闻软件)
ports-palm release=cvs (Palm? 系列软件支持)
ports-polish release=cvs (波兰语支持)
ports-portuguese release=cvs (葡萄牙语支持)
ports-print release=cvs (打印软件)
ports-russian release=cvs (俄语支持)
ports-security release=cvs (安全工具)
ports-shells release=cvs (命令行 shell)
ports-sysutils release=cvs (系统实用工具)
ports-textproc release=cvs (文本处理工具(不包含桌面出版)。
ports-vietnamese release=cvs (越南语支持)
ports-www release=cvs (万维网(WWW)相关软件)
ports-x11 release=cvs (支持 X window 系统的 ports)
ports-x11-clocks release=cvs (X11 时钟)
ports-x11-fm release=cvs (X11 文件管理器)
ports-x11-fonts release=cvs (X11 字体和字体工具)
ports-x11-toolkits release=cvs (X11 工具包)
ports-x11-servers (X11 服务器)
ports-x11-wm X11 (窗口管理器)
src-all release=cvs (FreeBSD 主代码,包含密码系统的代码)
src-base release=cvs (/usr/src 顶层的各式各样的文件)
src-bin release=cvs (单用户模式下可能用到的用户工具 (/usr/src/bin))
src-contrib release=cvs (FreeBSD 项目之外的工具和库,通常在 FreeBSD 中不作修改 (/usr/src/contrib))
src-crypto release=cvs (FreeBSD 项目之外的 密码系统工具和库,通常在 FreeBSD 中不作修改 (/usr/src/crypto))
src-eBones release=cvs (Kerberos 和 DES (/usr/src/eBones)。 没有在当前的 FreeBSD 发行中使用)
src-etc release=cvs (系统配置文件 (/usr/src/etc))
src-games release=cvs (游戏 (/usr/src/games))
src-gnu release=cvs (GNU 公共许可协议的工具 (/usr/src/gnu))
src-include release=cvs (头文件 (/usr/src/include))
src-kerberos5 release=cvs (Kerberos5 安全包 (/usr/src/kerberos5))
src-kerberosIV release=cvs (KerberosIV 安全包 (/usr/src/kerberosIV))
src-lib release=cvs (库文件 (/usr/src/lib))
src-libexec release=cvs (通常被其它程序调用的系统程序 (/usr/src/libexec))
src-release release=cvs (生成 FreeBSD 版本必需的文件 (/usr/src/release))
src-sbin release=cvs (但用户模式的系统工具 (/usr/src/sbin))
src-secure release=cvs (密码相关库和命令 (/usr/src/secure))
src-share release=cvs (跨多个平台的共享的文件 (/usr/src/share))
src-sys release=cvs (内核 (/usr/src/sys))
src-sys-crypto release=cvs (内核密码系统代码 (/usr/src/sys/crypto))
src-tools release=cvs (维护 FreeBSD 的各种各样的工具 (/usr/src/tools))
src-usrbin release=cvs (用户工具 (/usr/src/usr.bin))
src-usrsbin release=cvs (系统工具 (/usr/src/usr.sbin))
www release=cvs (FreeBSD WWW 站点的源代码)
distrib release=self (CVSup 服务器的配置文件,用于 CVSup 镜像站点)
gnats release=current (GNATS bug 跟踪数据库)
mail-archive release=current (FreeBSD 邮件列表存档)
www release=current (预处理过的 FreeBSD WWW 站点文件(不是源文件),用于WWW 镜像站点。)