最近入门emacs,配置的时候发生了些问题,我是win11上scoop安装的emacs 30.2,然后自己写配置,主要也是因为对lisp还是有一定了解,但是package refresh的时候报错了gnupg的问题,我目前确认了的点是:
emacs报错时,是gpg报错路径错误,显示在 /c/Users/xxx/.emacs.d/lisp/elpa/C:/Users/xxx/.emacs.d/lisp/elpa/gnupg 找不到;
到这里我就明白了大概是msys2风格的路径和win11风格的路径拼接在一起了,我就想着能不能尝试一下看看gpg命令,结果就是在powershell里面跑的时候,直接硬编码设定 homedir时,msys2风格的路径会成功,但是win风格的路径就会两个风格拼接在一起;
想求助有没有解决过的大佬🆘,因为我的配置估计还想跨平台,我之后还打算搞个mac或者fedora的备用设备,所以硬编码在配置文件里面显然不是个选择
附上一个更详细的信息:
直接在pwsh里面运行 gpg --homedir "c:/Users/xxxx/.emacs.d/elpa/gnupg" --keyserver hkp://keyserver.ubuntu.com --recv-keys 645357D2883A0966
gpg: keyblock resource '/c/Users/xxxx/c:/Users/xxxx/.emacs.d/elpa/gnupg/pubring.kbx': No such file or directory
gpg: failed to create temporary file '/c/Users/xxxx/c:/Users/xxxx/.emacs.d/elpa/gnupg/.#lk0x0000000a0001c9e0.A.309': No such file or directory
gpg: can't connect to the dirmngr: No such file or directory
gpg: keyserver receive failed: No dirmngr
wsl GUI 感觉怪怪的,主要我用的 scoop 看着方便就来了,而且 texlive 和 typst 都安装了,就懒得迁移了
查看package-gnupghome-dir路径设置是否正确
SPQR
2026 年3 月 28 日 08:51
6
我是msys2安装的emacs,用(setq package-gnupghome-dir nil)是管用的,实在不行直接(setq package-check-signature nil)也行。
Windows上的gpg有两个,一个是gpg for win,另一个是msys2编译的gpg,你用scoop安装的可能是msys2编译的,应该是本身 --homedir解析就有bug
2 个赞
我在 MSYS2 UCRT64 使用Emacs,碰到过非常类似的问题,现在配置里面是这样写的:
(when (eq system-type 'windows-nt)
(setq package-gnupghome-dir "~/.emacs.d/elpa/gnupg"))
用这个“弯”(~)反而让路径解析正确了,不过当时没有深究,如果要进一步研究的话,应该先搞清楚路径到底是在哪一步展开的
1 个赞
貌似 scoop 安装的有问题? 当年我好像也遇到过但忘了.
首先你安装 Gpg4win GUI 版本, 然后你新建一个 .gpg 文件, 然后使用 M-x epa-crypt-file 看下行不行, 先使用 对称加密(输入密码) 试试
推荐配置:
(setq epa-pinentry-mode 'loopback) ;; 让 Emacs minibufer 输入密码而不是弹出外部程序窗口
scoop 用久了现在感觉不好, 总是很怪的, 还不如多用 msys2…
1 个赞
scoop安装的好像不只是gpg有问题,我解决问题之后想装vterm结果发现scoop安装的make居然也是msys2风格的路径……无力吐槽了😤
打算卸掉scoop了,至于换不换msys2再考虑吧,之前用过msys2 mingw版,结果装texlive-full居然能少我常用的包,气的我下了个完整的iso文件。
刚刚试了一下装wsl版本的emacs-gtk,结果因为笔记本高分屏缩放150%的问题导致打字都粘滞,现在还没考虑清楚怎么换了
scoop 大多就是封装 msys2 mingw64 的包, 虽然 scoop 既能安装 bin 也能安装 gui 软件, 但没有解决软件的依赖捆绑问题.
1 个赞
说到 MSYS2,现在 MSYS2 的文档 里面默认推荐使用 UCRT 而不是 MSVCRT,理由在“MSVCRT vs UCRT”这一节,建议根据需要选择