求助:list-package报告无法验证签名

emacs 28,win10,msys2环境(64位),使用list-package更新时,报告了一个无法获得签名的错误:

Failed to verify signature archive-contents.sig:
No public key for 066DAFCB81E42C40 created at 2020-08-04T05:05:02+0800 using RSA
Command output:
gpg: keyblock resource '/d/Users/home/d:/Users/home/.emacs.d/elpa/gnupg/pubring.kbx': No such file or directory
gpg: Signature made Tue Aug  4 05:05:02 2020    
gpg:                using RSA key C433554766D3DDC64221BFAA066DAFCB81E42C40
gpg: Can't check signature: No public key

感觉像是gpg找秘钥文件的路径不太对(有个d:)。在网上找了一圈也没有找到办法。这个问题大家有遇到过吗? 按照网上的办法,安装gnu-elpa-keyring-update包,好像也没有什么作用;

另:我原先环境中有cygwin,最近换成了msys2,不知道是不是这个的影响。实在没办法了,求助大家了。谢谢;

我在msys2中也遇到了这个问题,请问已经解决了吗?

  1. set package-check-signature to nil , e.g. M-: (setq package-check-signature nil) RET
  2. download the package gnu-elpa-keyring-update and run the function with the same name, e.g. M-x package-install RET gnu-elpa-keyring-update RET .
  3. reset package-check-signature to the default value allow-unsigned 这个试过没
1赞

实验,可行。感谢!!!!!

我试了这个方案,当时没有成功;后来我把gnu的这个库删掉了;melpa库不需要签名,也够用了;

回头我抽空再试试是不是当时操作不对;

谢谢;

今天我把 windows7 上的 emacs 升级到 GNU Emacs 27.1 (build 1, x86_64-w64-mingw32) 之后,也遇到了相同的问题,而且奇怪的是,这个问题只在三台电脑中的一台上出现,其它两台暂时没出现这个问题。本来我也尝试前面的各种方法,都不行。 于是我静下心来观察报错信息,觉得首先是没有 public.kbx 这个文件,于是就到 .emacs.d/elpa/gnupg 中去看,发现果然没有,只有 public.gpg ,上网一搜,.gpg 是旧的格式,新的格式是 .kbx ,也没有可以转换的方法,我是把 gnupg 的 windows 版本更新到目前最新的 gnupg-w32-2.2.23_20200903.exe ,也没发现什么转换的方法,所以我就删除了 public.gpg ,再用 gpg --homedir x:\xxxx\emacs.emacs.d\elpa\gnupg --recv-keys 066DAFCB81E42C40 的命令来重建了 public.kbx , x:\xxxx\emacs 给有此问题的人士自行替换成自己实际上的路径。 然后,再启动 emacs 发现还是有错,这回找不到 public.kbx 的路径很奇妙: /cygdrive/y/home/x:/xxxx/emacs/.emacs.d/elpg/gnugp/public.kbx 我一看,这个文件为什么加上了 /cygdrive/y/home ?难道和 cygwin 有关?为了确切知道为什么 package.el 会调用 cygwin 里的 gpg 而不是我在系统里安装的 gnupg ,我打开调试模式 M-x toggle-debug-on-error ,在出错信息中看到确实是调用了 cygwin 的 gpg2。 然后我到 windows 的命令行提示符中运行 gpg2 --version ,发现 cygwin 确实把 gpg2 的 home 设置为 /cygdrive/y/home ,并且不同于 windows 版的 gnupg ,它会把这个 home 变量保存住,等于 emacs 的 epg 传递了 homedir 给 cygwin 的 gpg2 时,会接在 cygwin 的 home 后面,而不是取代原来 gnupg 的 home 。 所以我就偷懒一下,因为在我的电脑上, PATH 变量中 windows 版的 gnupg 排在 cygwin 前面,所以就到 C:\Program Files (x86)\gnupg\bin\ 下面,把 gpg.exe 复制一下,改成 gpg2.exe 。问题解决。