为什么在Mac OS X下使用Homebrew 比/替换MacPorts,fink更好的秘密

对于一般用户来说,使用macports来 做包管理还是比较方便的,我的macbook上也老早就装上了macports了,但一直没有去用它,因为感觉它有点恶心丑陋。其实我一直担心它污染我的 系统,因为它的依赖机制是根据自身来检查的,只要你的软件不是用macports安装的,即使你系统中已经存在里该依赖包(即使同一版本)它也会被下载回 来安装一遍。还引申出另一些问题是,系统中有很多相同软件的不同版本、浪费磁盘空间、安装速度因为依赖包过多而非常缓慢……如果你可以忍受这 些,macports还是挺方便的。可惜我实在受不了,终于我发现了Homebrew这个替换者,由于homebrew声明与macports不兼容,我马上把macports删除了试用homebrew。

先删除macports

sudo port -f uninstall installed sudo rm -rf \ /opt/local \ /Applications/DarwinPorts \ /Applications/MacPorts \ /Library/LaunchDaemons/org.macports.* \ /Library/Receipts/DarwinPorts*.pkg \ /Library/Receipts/MacPorts*.pkg \ /Library/StartupItems/DarwinPortsStartup \ /Library/Tcl/darwinports1.0 \ /Library/Tcl/macports1.0 \ ~/.macports

注意: /opt/local目录如果自己安装过软件,请修改一下

然后安装Homebrew,一行搞定

ruby -e “$(curl -fsS http://gist.github.com/raw/323731/install_homebrew.rb)”

homebrew是用ruby开发的,在mac下默认就安装了ruby发行包的,下面就等自动下载安装homebrew吧。

安装完成后,测试一下

brew -v

返回Homebrew的版本号说明安装成功。安装软件可以用brew install package命令,因为wget常用来测试而mac又没有自带,所以测试一下:

brew install wget

自动完成后which wget看看安装路径,默认安装到了/usr/local/bin下。好了,可以使用系统自带的库而不需要为macports的方式闹心。1. 技术角度。
Homebrew会使用OS X系统自带的库,而不是重新编译所有的依赖,这样可以减少很多不必要的冗余。记得在macports中, 经常需要编译perl和xorg。
Homebrew主要是用ruby实现,而macports使用TCL。ruby的用户群比TCL大很多。
对于一些复杂的软件,现在Homebrew也提供了binary支持,称作bottle。比如boost,QT。2. 社区角度。我认为这最重要的一点,Homebrew有一个非常活跃的社区。Github提供了一个良好的合作平台,用户之间的交流非常有效率。软件仓库的版本更新非常快,每天都会有多次提交。
总体感觉,Homebrew年轻富有活力,Macports偏于保守严谨。(Fink的用户群好像已经很小了,不提也罢)。

还犹豫什么呢? 赶快行动吧!