31

init.el用它来初始化包:

(package-initialize)
(add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/"))
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/"))
(add-to-list 'package-archives '("melpa-stable" . "http://melpa-stable.milkbox.net/packages/"))

当我这样做时,M-x package-refresh-contents我收到以下错误:Failed to download `gnu' archive.

M-x toggle-debug-on-error给了我这个堆栈跟踪:

Debugger entered--Lisp error: (error "Failed to verify signature archive-contents.sig: (\"No public key for 474F05837FBDEF9B created at 2014-09-29T07:20:03-0700 using DSA\")")
  signal(error ("Failed to verify signature archive-contents.sig: (\"No public key for 474F05837FBDEF9B created at 2014-09-29T07:20:03-0700 using DSA\")"))
  error("Failed to verify signature %s: %S" "archive-contents.sig" ("No public key for 474F05837FBDEF9B created at 2014-09-29T07:20:03-0700 using DSA"))
  package--check-signature("http://elpa.gnu.org/packages/" "archive-contents")
  package--download-one-archive(("gnu" . "http://elpa.gnu.org/packages/") "archive-contents")

这是我的配置有问题吗,我该如何解决?

4

5 回答 5

23

看起来像您的 Emacs 版本中的错误。您可以通过设置package-check-signature为零来规避它。

于 2014-09-30T00:36:41.107 回答
23

这不是由错误配置引起的错误,而是由于package-keyring.gpg从 Emacs 26.3 更改文件所致。如发行说明所述:

New GPG key for GNU ELPA package signature checking.

我相信来自 GNU ELPA存储库的较新软件包已签名以供检查此新密钥环。

修复它的简单方法是升级到 Emacs 26.3。

但是如果你像我一样懒得升级,你可以从这里package-keyring.gpg下载文件并将它放在你的 Emacs 安装位置下的目录中。就我而言,它是. 在各种平台(macOS、Windows 等)上,不同的安装方法(apt、yum 等)可能位于不同的位置。etc//usr/local/share/emacs/26.1/etc/package-keyring.gpg

或者,您可以尝试安装包gnu-elpa-keyring-update以在将来自动更新密钥环。

于 2019-10-04T12:19:16.093 回答
17

对于其他没有签名问题的人,请尝试初始化包

M-x package-initialize

于 2018-08-25T04:20:17.993 回答
13

我的问题是我缺少 gpg (gnupg)。

在 OSX 上,我使用brew install gpg.

于 2014-10-19T09:43:43.407 回答
0

我在 Arch Linux 上安装了 emacs,打开它,运行package-refresh-contents并遇到了这个问题。过了一会儿,我意识到我没有初始化文件。如果是这种情况,请创建您的 init 文件,emacs ~/.emacs.d/init.el然后添加以下内容:

(package-initialize)
(add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/"))
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/"))

保存C-x C-s并再次运行package-refresh-contents。这一次它会起作用。

于 2018-08-03T02:45:39.103 回答