我无法在emacs上加载.el包

时间:2016-03-09 08:30:03

标签: emacs

所以我下载了一个.el文件,我把它放在~/.emacs.d/elpa/文件夹中,但它不会出现在M-x list-packages上。如何使其显示在那里或如何安装此文件/包?

2 个答案:

答案 0 :(得分:2)

安装Emacs软件包有两种方法:键入M-x list-packages并从列表中安装,让Emacs为您下载,或者自行下载软件包并使用M-x package-install-file进行安装。< / p>

从包存档中安装

在第一种情况下,请注意有几种不同的包存档。变量package-archives的默认值仅包含GNU ELPA,但大多数人都希望将MELPA添加到该列表,因为它有更多的包。为此,您需要将以下内容添加到.emacs文件中(从MELPA网页复制):

(require 'package) ;; You might already have this line
(add-to-list 'package-archives
             '("melpa" . "https://melpa.org/packages/"))
(when (< emacs-major-version 24)
  ;; For important compatibility libraries like cl-lib
  (add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/")))
(package-initialize) ;; You might already have this line

之后,输入M-x list-packages应该列出比您需要的更多的包:)

从下载的文件安装

有两种类型的包:单文件包和多文件包。前者可以作为单个.el文件下载,而后者可以作为tarball(.tar)分发。这两种类型都可以使用M-x package-install-file安装。

请注意,并非每个.el文件都可以作为包安装。文件开头的注释需要遵循某个约定,记录在Emacs Lisp参考手册的Simple packages节点中。

这样就可能导致您下载的.el文件无法作为程序包安装。在这种情况下,您应该将它放在其他目录中(~/.emacs.d/elpa仅用于已安装的包),将该目录添加到load-path变量,并require包。如果您有foo.el并将其放在~/path/to/foo中,则看起来像这样:

(add-to-list 'load-path "~/path/to/foo")
(require 'foo)

答案 1 :(得分:0)

.el文件不是包。通过ELPA安装它可能非常适合手动下载静态.el文件;或许维护者有一个主页,其中包含ELPA(或Marmalade等)的说明。

特别是,一个软件包将在可用时接收更新,因此您不会永远停留在越来越过时的非托管版本上(尽管安静,全自动更新尚不可用或不可行,AFAICT)。 p>

但是如果你必须只使用已下载的文件,只要该目录包含在load-path中,就可以将它放在任何你喜欢的地方。但是,手动删除elpa目录是一个坏主意;把它放在其他地方。

在文件顶部附近查找评论以获取任何其他说明;例如,任何自动加载都可能需要单独配置,通常完全手动配置。

这曾经是你在旧版本的Emacs中总是做事的方式,所以你应该发现互联网仍然实际上充满了指南和教程,这些指南和教程解释了这种机制的更精细细节,如果单独的答案不是这样的话。足够了。