Emacs包安装插入额外的破折号?

时间:2013-11-06 02:05:36

标签: emacs package package-managers

我正在尝试将所有依赖项自动安装到新的Emacs安装中。当我将下面的代码段放在我的.emacs中时,我不断获得:Package `smex-' is unavailable.

我想知道这是否是预期的功能? Emacs入门套件做了类似我记得以前工作的东西。使用Emacs 24.3。

(when (not package-archive-contents)
  (package-refresh-contents))

(defvar my-packages
  '(smex))

(dolist (p my-packages)
  (let ((s (symbol-name p)))
    (when (not (package-installed-p s))
      (package-install s))))

修改

显然这是由一个bug或其他东西引起的。我现在能够在最新的Emacs 24.3.1中使用它。显然他们也改变了它,所以包名应该是符号。

(package-initialize)

(when (not package-archive-contents)
  (package-refresh-contents))

(defvar my-packages
  '(list of packages))

(dolist (p my-packages)
  (when (not (package-installed-p p))
    (package-install p)))

2 个答案:

答案 0 :(得分:6)

我在使用

时遇到了这个问题
(add-to-list 'package-archives 
             '("melpa" . "http://melpa.milkbox.net/packages/"))
调用(package-initialize)

。如果我执行

(setq package-archives '(("melpa" . "http://melpa.milkbox.net/packages/")
                         ("gnu" . "http://elpa.gnu.org/packages/")))

(package-initialize)之前,自动安装逻辑可以安装缺少的包。

答案 1 :(得分:0)

请参阅package-compute-transaction

(error "Package `%s-%s' is unavailable"
       (symbol-name next-pkg)
       (package-version-join next-version))