Emacs epa 和 gnupg2:"no usable configuration"

Emacs epa and gnupg2: "no usable configuration"

使用 Emacs for Mac OS X 25.1.1 and gnupg2 2.0.30 通过 homebrew 在 macOS Sierra 10.12.2 上安装。

Emacs 工作正常,gnugp2 在命令行级别也工作良好(已删除电子邮件地址):

pu@pumbair.local 528 ~/Dropbox/org $  echo "Hello World" >text.txt
pu@pumbair.local 536 ~/Dropbox/org $  gpg -a -e -r x@y <text.txt >text.gpg
pu@pumbair.local 537 ~/Dropbox/org $  gpg -d text.gpg
You need a passphrase to unlock the secret key for
2048-bit RSA key, ID 37B58834, created 2017-01-18 (main key ID 45C04EA8)
gpg: encrypted with 2048-bit RSA key, ID 37B58834, created 2017-01-18
Hello World

我的./emacs/init.el 说

; gpg
(require 'epa-file)
(epa-file-enable)
(setq epg-gpg-program "/usr/local/bin/gpg2")

pu@pumbair.local 505 ~/.emacs.d $  file /usr/local/bin/gpg2
/usr/local/bin/gpg2: Mach-O 64-bit executable x86_64

但我似乎无法让 Emacs 使用 gpg2; Meta-x epa-list-keys 产量:

GPG error: "no usable configuration", OpenPGP

我在这里使用 gpg 和 gpg2,但第一个是后者的符号链接。

我错过了什么?

编辑

浏览 EasyPG 的源代码,我的印象是它只适用于 gpg2 2.1+,所以我卸载了自制软件版本并从 Sourceforge 安装了 2.1.17 版本,但这也没有帮助。

所以我最终浏览了一些与该问题相关的源文件并直接邮寄给Daiki Ueno。他很快就回复了,告诉我用custom-set-variables代替setq:

(require 'epa-file)
(custom-set-variables '(epg-gpg-program  "/usr/local/bin/gpg2"))
(epa-file-enable)

我认为这对 Emacs 用户来说是显而易见的,但除了 org-mode,我几乎不将 Emacs 用于任何其他用途,所以它不适合我。

gpg只在/usr/local/gnupg-2.2/bin里面。在Eamcs中,(getenv "Path")exec-path只包含/usr/bin,但新版本的macOS限制了/usr/bin的访问。

我的解决方案是创建一个符号 link 并将路径添加到 emacs 环境及其执行路径中。

cd /usr/local/bin
ln -s ../gnupg-2.2/bin/gpg2 gpg

里面.emacs

(setenv "PATH" (concat (getenv "PATH") ":/usr/local/bin"))
(setq exec-path (append exec-path '("/usr/local/bin")))