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")))
使用 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")))