2014年6月26日 星期四

我為何仍繼續使用 Macports 而不用 Homebrew

很多人因為 Macports 在裝一些套件時,無法避免的另外編譯另外一套 Perl 裝至系統而跳槽使用 Homebrew。但身為一個前 Perl Developer,直接使用 System Perl as a dependency 其實並不太安全。

其一:  Mac OS 本身在升級時,會自動將 Perl 版本升級,如果你 link 至舊版的 Perl,升級之後你的 Homebrew 套件所有相依 System Perl 幾乎都要重新編譯才行。

但用 Macports 裝,則是將套件完全獨立一個空間出來,把套件跟 System library 的接觸面減到最小,就算是升級 Mac OS ,只要不是 32 位元轉 64 位元,原本編譯的套件幾乎都可以繼續使用。

其二:  Macports 現在提供 pre-built 好的套件安裝檔,安裝 package 幾乎不再需要重新編譯,Installer 自動下載解開就裝完了,完全不浪費 CPU。但目前 Homebrew 裝套件應該都是要重新編譯的。

其三:  安裝或升級套件,Macports 會自動幫你掃描是不是有 Broken library,若有問題也會自動重裝 library。(目前看起來 Homebrew 沒這個功能 ?)

其四: Homebrew 雖然 Formula 眾多,但安裝非官方的 Formula 有時容易引起套件衝突,舉例來說 PHP 編譯有各種 configure options,各家使用的 default configure options 又不一樣,安裝 extension 的時候還會彼此影響到... 有些 Formula 還必須先查看是否有 enable 某功能,不然裝了也是白裝。

其五: Homebrew 編譯套件不像 Macports 提供客製化 variants,你用某個 Formula 裝就是固定只能裝他預先指定好的 features,要客製化只能自己複製出來改,自己複製出來改就累了,你還得自己 maintain forumla 才行。 (更新: 據說 Homebrew 後來也支援了 option,不過升級套件要自己記住當初裝的 option 才行)