我的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")
这是我的配置问题,我该如何解决?
答案 0 :(得分:16)
看起来像您的Emacs版本中的错误。您可以通过将package-check-signature
设置为nil来避开它。
答案 1 :(得分:14)
这不是错误配置引起的错误,而是由于Emacs 26.3中文件package-keyring.gpg
的更改。如发布note中所述:
New GPG key for GNU ELPA package signature checking.
我相信来自GNU ELPA repository的较新软件包已签名以供此新密钥环检查。
修复它的简单方法是升级到Emacs 26.3。
但是,如果您像我一样不费心升级,可以从here下载package-keyring.gpg
文件,并将其放在Emacs安装位置下的etc/
目录中。就我而言,它是/usr/local/share/emacs/26.1/etc/package-keyring.gpg
。在各种平台(macOS,Windows等)上,不同的安装方法(apt,yum等)可能位于不同的位置。
或者,您可以尝试安装软件包gnu-elpa-keyring-update,以在将来自动更新密钥环。
答案 2 :(得分:9)
我的问题是我错过了gpg(gnupg)。
在OSX上,我使用brew install gpg
解决了这个问题。
答案 3 :(得分:6)
对于其他没有签名问题的人,请尝试初始化程序包
M-x package-initialize
答案 4 :(得分:0)
我在Arch Linux上安装了emacs,将其打开,运行package-refresh-contents
并收到此问题。一段时间后,我意识到我没有初始化文件。如果是这种情况,请使用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
。这次它将起作用。