使用ELPA管理Emacs扩展包

Table of Contents

Emacs24中集成了包管理器,叫做ELPA(Emacs Lisp Package Archive),便于管理ELisp扩展程序。

1 列出可用的包

执行:

M-x package-list-packages

ELPA会列出所有可用的包:

  • 已安装的包
  • 未安装的包,ELPA会自动从软件源服务器上获得最新的可安装包列表
  • Emacs内置的包

2 设置源

默认源中的可安装包比较少,EPLA支持设置多个源,在初始脚本(~/.emacs或~/.emacs.d/init.el)中加入:

(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
			 ("marmalade" . "http://marmalade-repo.org/packages/")
			 ("melpa" . "http://melpa.milkbox.net/packages/")
			 ("melpa-stable" . "http://melpa-stable.milkbox.net/packages/")
			 ("elpy" .
"http://jorgenschaefer.github.io/packages/")))

再执行package-list-packages命令时,会自动从这些列表中更新。但是每次执行package-list-packages都会从这些源中逐一获得最新列表,获取速度取决于网络,通常会比较慢,所以可以将列表内容保存到本地:

M-x package-refresh-contents

配合package-list-packages-no-fetch便可马上列出上次保存的列表

3 安装和删除

在包列表中使用C-s或C-r搜索某个包,然后把光标移动到你要安装的包所在行,可以使用以下快捷键管理包:

  • i,将包标记为“安装”
  • d,将包标记为“删除”

然后按“x”对标记的包执行操作,按“u”可以取消对某个包的标记。

安装包还可以执行:

M-x package-install

输入要安装的包(可自动补全)后回车。包会安装在~/.emacs.d/elpa目录中。

4 包升级

执行:

M-x package-menu-mark-upgrades

升级就是将旧的包标记为删除,新的包标记为安装,所以在升级前,需要先更新列表:

M-x package-refresh-contents

5 ELPA初始化

Emacs启动时会自动加载ELPA安装的包,但一定要注意初始化的顺序,Emacs首先加载初始化文件(~/.emacs或~/.emacs.d/init.el),然后再加载ELPA,如果要在~/.emacs中配置某些通过ELPA安装的包,就一定要先让ELPA加载,否则会出错。

通常会在~/.emacs或~/.emacs.d/init.el加入这两句:

(setq package-enable-at-startup nil)
(package-initialize)

意思是手动加载EPLA,package-enable-at-startup的值决定了Emacs启动后是否自动加载ELPA,默认为t,这里将它设置为nil,Emacs启动后不会加载ELPA。调用package-initialize是为了手动加载ELPA。

6 帮助

  • 安装包时提示:“emacs-24.1' is unavailable”

如果当前使用的Emacs版本是24.x,可能因为以前在老版本中手动安装过包管理器而导致的冲突。删除旧的包管理器文件~/.emacs.d/package.el即可。

7 更多参考