现在可以使用portsnap来下载或升级ports,portsnap是一个很简洁的工具,直接输入portsnap可以看到一个简短的使用说明:
% portsnap
……
Commands:
fetch -- Fetch a compressed snapshot of the ports tree,
or update an existing snapshot.
cron -- Sleep rand(3600) seconds, and then fetch updates.
extract -- Extract snapshot of ports tree, replacing existing
files and directories.
update -- Update ports tree to match current snapshot, replacing
files and directories which have changed.
下载新的ports树比较好理解,直接portsnap fetch extract就可以了。但是升级ports树呢?直接portsnap update就可以了吗?
很多人以为这样就可以升级ports树,但是可能没注意,它返回的结果总是“is updated。”既使再过很长一段时间,比如一个月,也仍然这样显示。也就是说,它根本没有“update”,但为什么显示“updated”呢?
仔细读一下上文的update子命令:“用当前的快照来更新ports树,对于改变的文件或目录进行替换”,这当中提到“当前的快照”,那么这个“当前的快照”是怎么来的呢?
再看fetch子命令:“获取一个压缩的ports树快照,或者升级一个已存在的快照”,从这儿可以看到,fetch可以用来升级快照。
cron同样也可以用来升级快照。
所以,“当前快照”的升级,是靠fetch或cron,而update只负责把“当前快照”更新的ports树中,大致的关系图是:
portsnap fetch portsnap update
ports服务器 -------------------------------> 快照 ----------------------------> ports树