一個事實: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。