62 FreeBSD连载:升级系统( 二 )


为了维护FreeBSD的源代码树 , 需要一个版本控制软件包CVSup和用于维护源代码的300M硬盘空间 。
【62 FreeBSD连载:升级系统】FreeBSD的所有源代码本来就是通过CVS(Concurrent Versions System)版本维护系统进行维护的 , 所有的使用者都能读取同样的源代码 , 但只有FreeBSD的开发者能够更改这些源代码 , 这样就保持了FreeBSD源代码的一致性 。
为了使用CVSup , 首先要安装这个应用软件 。这个软件被收录在Packages Collection中 , 因此安装非常容易 。可以使用pkg_add来完成这个任务:
# pkg_add cvsup-bin-16.0.tar.gz安装好CVSup软件之后 , 下一步就是配置一个配置文件 , 告诉cvsup从哪个服务器上同步源代码树 , 以及同步哪些源代码 。在安装CVSup的时候 , 还将安装cvsup的配置文件例子到/usr/share/examples/cvsup目录下 。
$ ls /usr/share/examples/cvsupREADME ports-supfile secure-supfilecvs-supfilesecure-cvs-supfilestable-supfilegnats-supfilesecure-stable-supfilestandard-supfile这个目录下的每个文件都用于一个特定目的 , 用来同步某个源代码树 。其中standard-supfile用于同步FreeBSD -current分支的源代码树 , stable-supfile用于同步FreeBSD -stable分支的源代码树 , ports-supfile用于同步Ports Collection的源代码 , 等等 。通常这些例子文件中需要修改的只是需要连接的cvsup服务器的名字 , 例如一个用于同步3.1-stable的配置文件supfile如下 , 这个文件是根据stable-supfile生成的 , 仅仅修改了host的设置 , 以指向正确的主机 。
*tag=RELENG_3_1*default host=cvsup.FreeBSD.org*default prefix=/usr*default base=/usr/src/cvsup*default release=cvs delete use-rel-suffix compresssrc-all配置文件中使用tag的值用来标识要同步的不同源代码树 。FreeBSD有多个版本 , 可以根据使用者的选择来获得不同的版本的源代码 。最常用的源代码是 -current分支的源代码和-stable分支的源代码 , 通常对于-current分支的源代码 , 需要设定 “tag=.” , 而stable分支就要指定版本号 , 这里为RELENG_3_1(或者使用RELENG_3表示3.x分支中的最新版本) 。
host的值用于指明用于同步源代码的服务器的名字 , 出于速度的考虑 , 最好使用离用户最近的CVSup服务器 。
base指明用于放置cvsup的状态文件的目录 , prefix指明用于放最终的源代码文件的目录 。由于最终的源代码和cvsup均要占用大量的磁盘空间 , 因此需要注意为其留下足够的空间 。
release指明源代码树是使用cvs进行版本维护的 , 后面为从服务器上传输源代码及处理本地文件时使用的参数 。
src-all用于同步所有的源代码 , 为了节约磁盘空间和同步时间 , 可以只同步部分源代码 。配置文件中给出了同步部分源代码的配置情况 , 但被注释了 。需要使用#符号将src-all注释掉 , 指明其他要同步的源代码 , 如ports-all 。
如果这个配置文件名为stable-supfile , 那么就能使用下列命令启动cvsup:
# cvsup -L2 stable-supfile参数-L2标识使用第2级记录方式在屏幕上打印出cvsup同步源代码的同步过程 , 如果系统位于防火墙内 , 会需要-P m参数以使用被动方式越过防火墙 。
# cvsup -P m stable-supfilecvsup可以在X Window下运行 , 此时它使用图形界面 。
通常对于不太经常更新系统的管理员来讲 , 手工启动cvsup来更新系统源代码就够用了 , 如果要经常更新源代码 , 就需要将cvsup命令放入crontab中执行 。
除了cvsup , FreeBSD也可以通过Email来提供源代码同步 , 这种方式称为CTM , 与cvsup不同在于 , cvsup必须由本地系统启动以从远端下载 , CTM是由远端服务器发送回来的 。CTM对于网络连接比较慢 , 或只能通过Email访问Internet的系统最方便 , 对于与Internet直接相连的系统 , 一般不需要使用CTM 。

推荐阅读