陈斌彬的技术博客

Stay foolish,stay hungry

Fink ,macports 和 Homebrew 比较

Fink,Macports 和 Homebrew 是3个主流的 package management tool

1.Fink

Fink 是基于 Debian 的 packaging tools 开发的。最大的特点是安装软件是预编译好的 (pre-compiled/pre-built)。 所以,用 Fink 安装 package 是不需要在本机编译的,都是现成的 binary code。

Fink 最大的问题是 package 跟进不够快。很多最新版的软件,你要等 Fink 。

2.Macports

Mac 算是 BSD 的一个变种。所以,BSD 的包管理软件 port 被移植到 Mac 上就显的理所当然了。

macports 的工作方式是下载 source code 然后在本地编译。macport 的理念是尽量减少对系统现有库的依赖。 所以,第一次用 macport 的时候,需要很长时间让 macport 重新 build 整个基本库,什么 perl 啊,python 啊的。

代价是较长的编译时间,较多的依赖关系下载。好处是不怎么依赖系统,也就是说,更新 Mac OS 不会破坏你现有的 package。

另外,macports 安装所有的 package 到 /opt/local 下面。这样不会和系统现有的 /usr/local 有什么冲突。

3.Homebrew

这个比较新,是在 Lion 之后才兴起的。

工作方式和 macport 类似,也是下载 source 并在本地编译安装。但是和 macports 有两个根本的区别。

  1. Homebrew 的理念是尽量使用系统现有的库。这样可以大大的减少编译时间。
  2. package 都安装到 /usr/local 下面。

这两点和 macports 是完全相反的。结果也是有利有弊。

最大的好处莫过于编译时间变短,安装简单。问题就是和系统紧密依赖。

另外 Homebrew 假设你的Mac是单用户系统,所以 /usr/local 的 owner 应该是你,而不是传统的 root。

这个假设在大多数情况下都成立。

(当然你可以改变 Homebrew 的安装路径,然后修改你的 PATH

另外,一个不太重要的区别,macport 是用 rsync 来同步 repository tree 和获取新的 package 的。

Homebrew 是用 git 来管理 repository 的。 如果你是在内部网或者 firewall 后通过 proxy 使用,这点可能会给你带来影响–一些 proxy 不支持 rsync 的。

总结

  1. 少用或者不用 Fink 。
  2. 如果你是重量级的 Linux 用户,希望使用所有的 open source package,那么 macports 是你不二的选择。
  3. 如果你只希望很快的安装一些便利的工具,那么 homebrew 是个不错的选择。