5

最近SF开展了「统一开发平台为Mac」的运动,我也从Ubuntu切换到了Mac OS X。本文记录一下如何在Mac OS
X下安装CoffeeScript环境,以备以后参考。希望对别人也有用。

Mac OS X下安装CoffeeScript的方法和Ubuntu一样,使用npm安装:

sudo npm install coffee-script

全文完

呃,短了点,但是真相就是如此,有了npm,在Mac OS X上安装CoffeeScript环境就是这么简单。

Node

等等,我说了“有了npm”,如果没有npm怎么办?

还能怎么办?装呗。Node自带npm,所以只要安装Node就可以了。

Mac OS X下安装Node,可以使用node官网提供的pkg。不过我听说Mac
OS X下用homebrew装软件很有逼格方便,所以选择使用homebrew安装:

brew install node

brew

好吧,其实需要安装了Homebrew才有brew命令。事实上安装配置Homebrew还有点小麻烦,所以这里顺便也记录一下。

Homebrew是Mac OS X下的包管理器,当然不是官方的,是有爱的开发者自己捣鼓的,基本算是Mac OS
X下包管理的事实标准了,差不多相当于Ubuntu下的apt。

安装Homebrew很简单,同样只需要一条命令:

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

等等,其实没有那么简单,因为Homebrew依赖Xcode……

是的,为了使用Homebrew,你需要下载安装好几G的Xcode!当然,大部分使用Mac OS X的开发者应该已经安装了Xcode,不过像我这样没玩过Objective C的人就……

其实Homebrew只是需要Xcode内置的gcc而已,并不需要Xcode。所以,如果不用Xcode开发的话,只需要安装Xcode命令行工具即可,这个工具可以在Apple开发者网站上下载。

下载的话,需要注册Apple开发者,注册是免费的。如果你不愿意填那几个无聊的表格的话,你可以自己编译一个gcc——反正homebrew只是需要gcc而已。

等等,编译gcc好像需要Xcode,这不是死循环嘛!坑爹!

好在有好心人帮我们编译好了,我们只要下载安装下就可以了。

好了,安装好Xcode或Xcode命令行工具或osx-gcc后,再运行上面的那行命令就可以成功安装homebrew了。

对了,如果你brew的软件需要X11环境的话,你还需要安装XQuartz才行。我只用brew安装命令行工具,所以就没装这个。

Fink和macports

Node wiki的安装指南上还看到两个东东,Fink和macports,这是神马?

了解了一下,这是Mac OS X 上的另外两个包管理器。

MacPorts

MacPorts,原本叫DarwinPorts(Darwin是Apple发布的一个开源的操作系统,是Mac OS X的基础。粗略地说,Mac OS X去掉Cocoa、Quartz、图形用户界面以及一堆驱动就是Darwin了)。MacPorts是2002年开始的项目,可谓历史悠久。

用MacPorts安装软件是这样的:

sudo port install packagename

MacPorts和Homebrew的区别主要是:

  • MacPorts的软件依赖是自己搞一套,比如Python、Ruby什么的都自己弄一套,理由是不会因为系统自带的版本太老旧而出问题;Homebrew的哲学则是,既然系统预装了,为什么不用呢?
  • MacPorts认为/usr/local应该留给用户自行编译安装的软件,所以用macports安装的软件都放在/opt/local/。Homebrew采取了简单的方案,将软件安装到/usr/local
  • MacPorts 使用 TCL 编写,Homebrew 使用 Ruby。

Fink

Fink的历史也不短,是2000年开始的项目。简单地来说Fink是把Debian/Ubuntu下的apt移植到Mac OS X和Darwin下。所以它理所当然地使用了Perl语言。

使用fink安装和删除软件:

fink install nedit
fink remove nedit

软件都安装在/sw目录下,单搞一个目录的理由和MacPorts类似。

因为是移植apt,所以fink提供的都是二进制安装包,(这就意味着软件包的更新需要等志愿者打包……)而MacPorts和homebrew默认是编译安装。这也导致fink的包通常而言会比较旧一点。从DIY的角度,给HomeBrew写条Formula真是so easy,MacPorts因为用TCL,所以写起来啰苏一点,而fink打包就麻烦得多了。

呃,好像跑题了? 话说我本来只是想装一些CoffeeScript的说~ 怎么一个早上就这么不知不觉地过去了……这难道就是传说中的「结构性拖延」?


江小湖Laker
6.9k 声望371 粉丝

进击的程序媛快去创造奇迹~