2008年12月24日 星期三

大肥姊對 FreeBSD 7.1RC 的一些感想 - 關於軟體工程

[From FreeBSD 7.1 - delphij's Chaos ]


(很有趣,大肥姊用的佈景主題剛好跟我的完全一樣:minimalist_red on MT。)


我覺得他的這段話是很有道理的:



ports/ 是否有必要随 src/ 冻结?我认为意义不大,因为多数用户并不会使用光盘附带的 package,甚至于使用 -STABLE 的 package 会成为阻碍在 -STABLE 分支中增加新的 API 的障碍



從 2001 年開始,我的零號機 chihiro(千尋) 就一直是 -current 機;從最早的 5-current 一直用到現在的 8-current。除了早期的 SMPng 的不穩定以外,從 7-current 開始,已經可以穩定到可以當作半 production 在用了。所以後來規劃新的幾台機器的時候(sh-mail, kiki),都直接採用 8 - current codebase。


這幾天和 macports 說掰掰,其實有些原因,最大的原因,居然是『因為 FreeBSD ports 太好用了』。有了 dougb@ 的 portmaster (還有以前 knu@ 的 portupgrade 套件),管理系統上安裝的軟體對 FreeBSD admin 來說,變得相對容易。機器少的時候每台自己 portsnap 更新,自己 build/fetch package;如果開農場,就做幾台機器出來當作 package builder,造出不同版本的套件來讓每台機器使用。最重要的是,ports 每個 maintainer 辛苦維護 -HEAD 對每一個 production version 的 FreeBSD 相容性,所以雖然 6-STABLE, 7-STABLE, 8-CURRENT 三個不同的版本系列不斷更新,ports 卻還是能維持相當程度的可用性,只要是系統上有的 library 都盡量引用,避免重複安裝。


反觀 macports 的哲學,就是“我要裝我自己的“。拿 Python 來說好了,10.5 裡面內建 2.5 完整版和 2.3 runtime,但是如果想要用 macports 來裝 trac 系統,macports 會堅持在 10.5 上面再安裝一次 python 2.5,然後才安裝 trac,美其名是『保證所有運作環境的一致性』,實際上卻頗疊床架屋。(至少 Python 應該尊重系統內的 framework 架構,優先使用系統內建版本)如果還考慮到安裝了 Xcode 要使用 PyObjC,問題就更麻煩了。為了安裝個 mtr 或是 axel,拉進一堆 dependancy 的做法,感覺有點不乾淨。


回到 FreeBSD ports 的問題,我認為甚至可以不需要跟 pkgsrc 一樣,維護每季一次的 pkgsrc-release (or called stable?),ports 的 -HEAD 就已經足夠應付 FreeBSD 本身的版本演進了。如果系統管理員認為,只需要 security fix,其實可以手動選擇要升級的套件。除非遇到 gettext 大升級這種數年一次的事件,不然每個 package 要不要升級,管理員都是可以自己決定的。




沒有留言:

張貼留言