Emacs epa и gnupg2: нет пригодной для использования конфигурации

Использование Emacs для Mac OS X 25.1.1 и gnupg2 2.0.30, установленный через homebrew на macOS Sierra 10.12.2.

Emacs работает правильно, и gnugp2 также хорошо работает на уровне командной строки (адреса электронной почты удалены):

[email protected] 528 ~/Dropbox/org $  echo "Hello World" >text.txt
[email protected] 536 ~/Dropbox/org $  gpg -a -e -r x@y <text.txt >text.gpg
[email protected] 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")

а также

[email protected] 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+, поэтому я удалил доморощенную версию и установил версию 2.1.17 с Sourceforge, но и это не помогло.


person uselpa    schedule 19.01.2017    source источник


Ответы (2)


В итоге я просмотрел некоторые исходные файлы, связанные с этим вопросом, и отправил письмо Дайки Уэно напрямую. Он быстро ответил, сказав мне использовать custom-set-variables вместо setq:

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

Я предполагаю, что это очевидно для людей, использующих Emacs, но я вряд ли использую Emacs для чего-либо еще, кроме организационного режима, так что это было не для меня.

person uselpa    schedule 20.01.2017
comment
Для обычных пользователей emacs это не очевидно, и то, что рекламируется как работающее из коробки - person kevzettler; 19.03.2017
comment
Похоже, это ошибка, которую мы не можем использовать setq и вынуждены прибегать к customize: debbugs. gnu.org/cgi/bugreport.cgi?bug=24229 - person ctietze; 10.04.2018
comment
gpg изменил папку, я думаю - теперь должно быть (custom-set-variables '(epg-gpg-program /usr/local/bin/gpg)) - person Henrik K; 28.01.2019

gpg только внутри /usr/local/gnupg-2.2/bin. В Eamcs (getenv "Path") и exec-path содержат только /usr/bin, но новая версия macOS ограничивает доступ /usr/bin.

Мое решение состоит в том, чтобы создать символическую ссылку и добавить путь в среду 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")))
person code4j    schedule 01.03.2018