同步方法对比
更新Ports Tree的方法有很多,例如匿名CVS、CVSup和CTM。
CVSup 是采用pull的方式来更新源码的。以CVSup为例,当用户(或cron)运行CVSup程序时,它会和远程的CVSupd服务器取得联系,然后更新文件。用户取回的更新文件是最新的,而且随时可以拿到这些文件。用户还可以限制更新动作,只更新自己感兴趣的某个文件或目录。更新动作由服务端根据用户的设定完成。
CTM有一个脚本文件专门用来辨别修改过的文件。这个脚本文件是由主CTM服务器来执行,每天比较几次,并把两次执行时间内修改过的文件加以压缩、编号,然后加以编码 (以可打印的ASCⅡ字符为主),最后以E-mail的方式寄出。当用户收到的时候,这些“CTM deltas”由ctm.rmail程序来处理。它可以自动解码和进行确认,并在用户的源代码上使用这些修改。如果用户不小心把部分程序清除掉了, CVSup会扫描出来,并自动为用户把不足的部分补齐。
更新Ports Tree
Ports Tree基本上是每天都在更新的,而且各种软件每天都有新的版本会推出,所以要及时更新Ports Tree。另外,一些Ports Tree有问题的地方也需要通过CVSup取得新的版本文件来修正。下面给出更新Ports Tree的方法。
如果用户系统中并没有安装Ports,那么请把光盘放入光驱中,用“/stand/sysinstall”命令,进入“Configure”中的“Distributions”,选择Ports来安装。具体更新操作如下:
一.)这种方式使用 sysinstall 手动安装Ports Collection。
1.以 root 用户身份, 运行 sysinstall (对于 FreeBSD 5.2 之前的版本, 应该是 /stand/sysinstall),如下所示:
# sysinstall
2. 选择 Configure, 按 Enter。
3. 选择 Distributions, 按 Enter。
4. 选择 ports, 按 Space。
5. 选择 Exit, 按 Enter。
6. 选择您的安装介质,就像CDROM,FTP,等等
7. 选择 Exit 并按 Enter。
8. 按 X 键退出 sysinstall。
二.)先安装 CVSup,输入下面的命令。
先在#后输入cd /usr/ports/net/cvsup-without-gui/
再在#后输入make install clean
三.)通过下面的命令在/etc中新增一个make.conf (其实有一个sample在/etc/default中,但现在不用它)文件。
% touch /etc/make.conf
3.参照下面的内容编辑make.conf。
SUPHOST=ftp.freebsdchina.org
SUPFILE= /usr/share/examples/cvsup/stable-supfile
PORTSSUPFILE= /root/ports-supfile
DOCSUPFILE= /usr/share/examples/cvsup/doc-supfile
MASTER_SITE_BACKUP?=\
ftp://ftp.freebsd.org.cn/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/\
ftp://freebsd.csie.nctu.edu.tw/pub/distfiles/${DIST_SUBDIR}/\
ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
4.接着从/usr/share/examples/cvsup中复制一份ports-supfile到/usr中。这是为了日后使用方便,且维持原有范例不变。
% cp /usr/share/examples/cvsup/ports-supfile /usr
5.编辑ports-supfile。
6.把*default host=CHANGE_THIS.FreeBSD.org改为*default host=freebsd.org。
7.把ports-all注释掉。
8.把下面需要的Ports组件打开(把#号去掉)。
ports-base 基本的工具。
ports-archivers 关于文件压缩及解压缩的程序。
ports-astro 与天文学相关的程序。
......
ports-X11-servers X-Window系统服务器。
ports-X11-toolkits 以X-Window系统为基础的开发工具。
ports-X11-wm X-Window系统的管理工具。
9.因为刚安装好cvsup-without-gui-16.1g.tgz,所以必须先输入下面的命令,重新载入环境配置文件,才能让程序路径生效。不然在运行时会提示找不到文件。
% source ~/.cshrc
10.最后用下面的命令更新Ports-Tree。
% cvsup -g -L 2 /usr/ports-supfile
但是又出现新问题了
我配置好了ports-supfile之后
运行
cvsup -g -L 2 /usr/cvsup/ports-supfile
得到提示
www# cvsup -g -L 2 /usr/cvsup/ports-supfile
cvsup: Command not found.
(解决办法#rehash)
只要看到如下的结果,就表示Ports Tree更新成功了。
……
Shutting down connection to server
Finished successfully
结论
其实,并不是每个系统非得一定要对Ports Tree进行更新。但是为了使系统更加稳定地运行,减少系统自身的安全性带来的危害,建议还是更新FreeBSD系统的Ports Tree。