Emacs 的 package-install 在包的末尾插入了一个额外的破折号

Emacs's package-install inserts an extra dash at the end of the package

在与其他编辑器打交道几年后,我一直在尝试再次切换到 Emacs,但每当我设置 MELPA 并尝试从我的 .init.el 安装软件包时,我都会收到此错误。

基本上,package-compute-transaction 似乎在包名称的末尾添加了一个破折号,以防止在存储库中找到它。使用 M-x package-install 手动安装包确实可以正常工作。

我的init.el(目前是准系统):

;; init.el -- Emacs config

;; MELPA setup and initial packages
(require 'package)

(add-to-list 'package-archives
         '("melpa" . "http://melpa.org/packages/"))

(unless package-archive-contents
  (package-refresh-contents))

(package-initialize)

(defvar package-list
  '(better-defaults 
    material-theme))

(dolist (p package-list)
  (when (not (package-installed-p p))
         (package-install p)))
;; Basic defaults

(setq inhibit-startup-message t) ;; Hide startup mesage
(load-theme 'material t) ;; Load theme: Material
(global-linum-mode t) ;; Line numbers

我得到的错误是 运行 Emacs with --debug-init:

Debugger entered--Lisp error: (error "Package ‘better-defaults-’ is unavailable")
  signal(error ("Package ‘better-defaults-’ is unavailable"))
  error("Package `%s-%s' is unavailable" better-defaults "")
  package-compute-transaction(nil ((better-defaults)))
  package-install(better-defaults)
  (progn (package-install p))
  (if (not (package-installed-p p)) (progn (package-install p)))
  (while --dolist-tail-- (setq p (car --dolist-tail--)) (if (not (package-installed-p p)) (progn (package-install p))) (setq --dolist-tail-- (cdr --dolist-tail--)))
  (let ((--dolist-tail-- myPackages) p) (while --dolist-tail-- (setq p (car --dolist-tail--)) (if (not (package-installed-p p)) (progn (package-install p))) (setq --dolist-tail-- (cdr --dolist-tail--))))
  eval-buffer(#<buffer  *load*> nil "c:/Users/Nelthorim/.emacs.d/init.el" nil t)  ; Reading at buffer position 830
  load-with-code-conversion("c:/Users/Nelthorim/.emacs.d/init.el" "c:/Users/Nelthorim/.emacs.d/init.el" t t)
  load("c:/Users/Nelthorim/.emacs.d/init" t t)
  #[0 "56

我的 Windows 台式机和 Linux 笔记本电脑都会出现此错误(完全相同),两种设置均使用 Emacs 24.5 和 25.0。

我找到了一个针对类似问题的旧 SO 答案,标记为已解决。但是那里给出的 "solutions" 不起作用。

编辑:对我的 init.el 进行了一些更改,但结果没有差异。

似乎 "typo" 是导致此错误的原因。

已更改:

(add-to-list 'package-archives
     '("melpa" . "http://melpa.org/packages/"))

用于:

(add-to-list 'package-archives
     '("melpa" . "http://melpa.org/packages/") t)

问题已解决。