Mac is different

如果秀外慧中不可得,那么还是先做到赏心悦目为妙。

几天前我拿到了自己的的一个mac,作为一个相对长时间的Linux用户,我不得不对aqua界面表示感叹,设计的太漂亮了。但是,当我通过终端深入到GUI之下时,一种莫名的烦躁感就会涌上心头:这个目录安排的太纠结了。

在我看来,一个正常的Linux系统,目录的安排应该是井井有条的。以Archlinux为例,/bin下面是最基本的系统程序,一般程序安装在/usr/bin下面,程序的其他部分装在/usr/share下面,配置文件放在/etc下面,各种库装在/usr/include和/usr/lib下面。(Archlinux放弃了/usr/local目录,这个目录本来是为了放只在本机上使用的软件的,这样进一步简化了系统目录结构)。这个pdf介绍了一般Linux的目录划分。

在mac下面,一切都显得似是而非,生活并不像这篇介绍OS X目录结构的文章中说的那么美好。os x的底层darwin作为一个正牌的Unix,对于目录安排本身是有和Linux类似的要求的。所以我们可以看到/下面一堆bin、usr、etc目录。但是,在此之外,os x还有另外一些目录:Applications,  Library,  Users。 在Mac上:

  1. 很多软件安装的时候只要拖动到Applications目录就可以了,所以很多的软件就会只安装在Applications目录下而与/usr/bin、/usr/local/bin无关。
  2. 移植自Unix系统的软件一般都会安装在/usr/bin或者/usr/local/bin下。
  3. 为了方便安装Unix下软件,FreeBSD下面的Ports被引进到OS X下面于是产生了DarwinPorts / MacProts,这两个Prots软件默认是把软件安装在/opt/local下面的。

于是,一个软件就可以被安装在三个地方,而实际上它被安装在哪里则是量子状态的,你不测试便猜不出来在哪。

譬如说,在我的系统上,Python2.6被装了两遍,一个是在/usr/bin下,一个是在/Applications/MacPorts下(是的,MacPorts把自己装在了Applications目录下)。

又譬如说,如果使用octave-forge的dmg文件安装octave的话,你会发现在终端里是没法调用octave的,因为$PATH中是没有octave安装的位置的。那么octave究竟安装在哪呢?答案是/Applications/Octave.app/Contents/Resources/bin/octave。你可以在$PATH里面手工加入这个目录,这个对Octave有用,那么Pctave呢?再加一遍?

什么,你想说可以用MacPorts把这类软件装到/opt/local下?那么为了某些诡异的依赖关系你得先把xorg的一系列程序全部编译一遍,即使你的机器上已经有X11了。

结论:

  1. As the title, Mac is different
  2. 美女的房间总是很乱的
  3. 也许OS X需要一个原生的包管理器,而不是DarwinPorts / MacPorts那样第三方的

你猜我的结论会是上面三个中间的哪一个?

About these ads

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: