Ответ 1
Я просто понял, как использовать gpg-agent
на моем Mac сегодня. Я был заблокирован после попадания той же ошибки, что и вы:
gpg: problem with the agent - disabling agent use
TL;DR; Как я исправил его
Для моей установки я смог исправить это, установив pinentry-mac
и указав gpg-agent
, чтобы использовать его, тем самым вызывая приглашение GUI по мере необходимости.
1. install pinentry-mac
% brew install pinentry-mac
2. update gpg-agent conf
# manually change ~/.gnupg/gpg-agent.conf pinentry-program to /usr/local/bin/pinentry-mac
3. update shell view of PATH contents
% hash -r
4. restart gpg-agent
# however you normally do it (see below for how I run it manually)
Подробности по отладке
Я отлаживал это, перезапустив gpg-agent
вручную. Сначала я прокомментировал конфигурации в ~/.gnupg/gpg-agent.conf
, затем я запустил эту команду, чтобы перезапустить gpg-agent с помощью --verbose
:
% killall gpg-agent && \
eval $(gpg-agent --pinentry-program /usr/local/bin/pinentry --default-cache-ttl 60 --daemon --verbose)
Затем я запустил тестовую команду и увидел ошибку, указанную выше, а также новую:
# update the MY_GPG_KEY_ID as appropriate
% echo hi | gpg -e -r $(MY_GPG_KEY_ID) | gpg -d --use-agent
...
gpg-agent[60604]: command get_passphrase failed: Device not configured
gpg: problem with the agent - disabling agent use
...
В конце концов я понял (после прочтения этой статьи и этой страницы GPG), что GPG_TTY
не был установленном шагами, которые я выполнял для запуска gpg-agent
. Поэтому, как только я установил эту переменную, все "сработало":
% killall gpg-agent && \
eval $(gpg-agent --pinentry-program /usr/local/bin/pinentry --default-cache-ttl 60 --daemon --verbose)
% export GPG_TTY=`tty`
# Now the below command succeeds
% echo hi | gpg -e -r $(MY_GPG_KEY_ID) | gpg -d --use-agent
В разгар этого упражнения я пробовал много разных опций и обнаружил, что "tpl2" GUI "только что сработал".
Избегание прошивки с фреймворком графического интерфейса
Если вы не хотите, чтобы всплывающее объявление GUI появилось, я думаю, что достаточно убедиться, что в каждом терминале установлены следующие переменные env:
-
GPG_TTY
- Например, вы можете поместить эту строку в свой .bashrc:
-
export GPG_TTY=$(tty)
-
GPG_AGENT_INFO