package manager

之前一直用NetBSDpkgsrc做为各种Unix-like系统的包管理系统,pkgsrc在自己内部解决依赖关系,这点对于生产环境来说,是很好的一个优点,我通常会在服务器里装一个pkgsrc,在用户目录下,维护一套UNIX软件。但是用在自己的机器上,内部解决软件依赖,就是个缺点,浪费编译时间和硬盘空间。

Mac上可用的包管理系统很多,Fink移植于Debian的apt,Gentoo的portage也支持OS X。OS X是基于BSD的系统,BSD有自己的一套包管理系统,如FreeBSD的ports和NetBSDpkgsrc,MacPorts可以看作是这一系列中的一个,不过它并不是OS X原生的,它只是OpenDarwin的子项目,所以和pkgsrc一个样,也是内部解决依赖,真正为OS X设计的原生包管理系统非Homebrew莫属,它会尽量依赖系统里已有的软件。

自从用了Homebrew之后,再也不用为系统里有两套perl和python而crazy了,之前通过pkgsrc装的软件全删掉,改Homebrew来安装和管理。 如果软件没有被pkgsrc收录,而想通过pkgsrc来管理的话,那就得自己写makefile,而homebrew,则可以自动帮你生成Formula,比如我要安装blat

brew create http://users.soe.ucsc.edu/~kent/src/blatSrc35.zip

当然有可能需要编辑一下:

brew edit blat

大多数情况下,并不需要修改,创建了formula之后,就可以使用homebrew安装。

brew install blat

Emacs

虽然Homebrew是为OS X设计的,但它毕竟不是苹果的东西,无法管理系统内置的程序,OS X自带Emacs,版本22,已经很老了,而且没有图形界面,为了方便管理和升级,只能把系统自带的删掉,用Homebrew来安装新版的Emacs-24.3,安装时使用参数–cocoa,使得emacs能够识别OS X的keybinding,创建链接到Applications下,这样可以在Applications中双击运行。

rm /usr/bin/emacs
rm -rf /usr/share/emacs
brew install --cocoa emacs
ln -s /usr/local/Cellar/emacs/24.3/Emacs.app /Applications/

site-lisp

在.emacs.d目录下新建site-lisp目录,用于放置各种第三方的包,在.emacs里加入:

(let ((default-directory "~/.emacs.d/site-lisp/"))
  (normal-top-level-add-subdirs-to-load-path))

让emacs启动时,加载site-lisp及其子目录。

eshell PATH

eshell是个非常美好的存在,在windows下安装Emacs,就拥有了一个小型的shell,非常方便,当然它并不是bash,如果在windows下使用会缺少很多bash内置程序和许多的unix命令行工具,幸好可以配置emacs调用cygwin的bash。

eshell并不使用.bash_profile中定义的PATH,好在eshell中内置addpath程序,可以非常方便地把路径加入到PATH中去。

~ $ addpath 
/usr/bin/
/bin/
/usr/sbin/
/sbin/
~ $ addpath -b /usr/local/bin
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
~ $ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

不过这种方式,只是临时加路径而已。

要想永久性把改变PATH变量,还是需要把它加入到.emacs中去。

(setenv "PATH" (concat "/usr/local/bin:" (getenv "PATH")))
(setq exec-path (append exec-path '("/usr/local/bin" "/opt/bin")))

color-theme

安装color-theme,放在.emacs.d/site-lisp下,在.emacs里加入:

(require 'color-theme)
(color-theme-initialize)
(color-theme-robin-hood)

启动时加载color-theme,搞代码很伤眼啊 =,=

Maxima

Maxima是一个计算机代数运算系统,它是由MIT于1968至1982年间开发的Macsyma系统演变而来的。MIT于1982年将Macsyma源代码交与美国能源部(DOE),这部分代码后来被称作DOE Macsyma。DOE Macsyma的一个版本从1982年起由德克萨斯大学的William F. Schelter教授维护,直到Schelter教授于2001年去逝。在1998年,Schelter教授从能源部获得了授权,将DOE Macsyma源代码以GNU Public License版权协议发布。在2000年,他在SourceForge开始了Maxima项目,继续维护开发DOE Macsyma,自此该软件被称作Maxima。

Emacs调用maxima是非常爽的,公式可以通过LaTeX表示出来,非常漂亮,把buffer保存为txt,公式将被保存为LaTeX代码。

ESS

另一个必备是ESS,可以在emacs调用R,解压放在.emacs.d/site-lisp下,在.emacs里加入:

(require 'ess-site)

ESS在我心中,完胜RStudio,唯一不足的是画图时要弹窗口,如果能够像imaxima一样,在emacs buffer中支持inline plot就完美了。

Markdown

Markdown-mode让emacs支持markdown语法,安装之后,需要在.emacs中加入:

;; markdown mode
(autoload 'markdown-mode "markdown-mode"
  "Major mode for editing Markdown files" t)
(add-to-list 'auto-mode-alist '("\\.text\\'" . markdown-mode))
(add-to-list 'auto-mode-alist '("\\.markdown\\'" . markdown-mode))
(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))

这样当在emacs中打开.text/.markdown/.md文件时,将自动加载markdown-mode。