一个事实:FreeBSD主ftp站上的6-stable的package版本不停的在变,偶尔有时还断档!比如kde和xorg,最近利用pkg_add -r来安装软件,基本上要靠运气,因为时不时系统会告诉你,此package不存在,利用portupgrade多少能缓解一些,但是要费时编译源代码,多少有些不爽!
一个尝试:这两天一直在make ports的一个参数上下功夫,"package-recursive"是一个利用ports建立package的参数(命令更合适些),它的作用是建立当前ports目录下的软件包,而且还把有依赖关系的ports自动打包,生成的package会按照ports树的结构在 /usr/ports/packages 中存放,结构和ftp站点上的非常相似。我用kde试了一下,不会生成KDE安装所需要的所有软件包,但KDE必需的却都已经打包。我想这多少和相关软件包的依赖有关联。不清楚在make中是否有层层递归的命令,笨方法,围绕着KDE的几个主要软件模块,再分别打包,看似努力会有成果,但实际测试的结果,很多KDE需要的某个版本的package不存在,但比它高的版本确实存在!思前想后可能是以前安装完KDE之后升级ports所致,既然是利用ports打包文件,当然要使用ports里面的版本编号。所以版本存在差异,这条路走到黑也不会成功!
一个想法:若更新ports为最新,然后不动它,然后编译需要的软件包,之后再利用ports打包,或许就没有了版本号有出入的问题,也或许freebsd就是这么干的,定期更新ports,然后定期make install clean,然后 make package,这样一个版本的软件包就出来了。当然FreeBSD不会这么粗糙。FreeBSD能够可以利用它所掌握的资源搞个集群来做这个事,但对于我这个“软件贩子”,或许是一种不错的做法
一个做法:在一台闲置的机器上,或者一个虚拟机里面,做上面这档子事儿,没事儿就让它根据更新的ports进行打包,这样需要哪个软件时,pkg_add -r 就行。
所有的一切有个前提,ports的维护者们,可要更新好ports之间的依赖关系,不修改的话,天王老子也没辙了。龌龊的窃想,KDE的维护者们是否在偷懒,否则怎么在freebsd的ftp主站上怎么迟迟不见kde.tbz。