Прошло больше года. Итак, я решил эту проблему. Проблема вызвана ошибкой при использовании параметра --daemon
, как описано здесь :https://dev.gnupg.org/T5076,
Вкратце, агент gpg -не должен порождать другой процесс, если существующий процесс уже существует, когда мы пытаемся выполнить команду gpg, но было упорно не использовать существующий процесс агента gpg -и создавать свой собственный случайный процесс. процесс без использования пользовательской конфигурации.
Таким образом, решение для пользователя systemd в моем случае: мне нужно использовать параметр --supervised
при запуске агента gpg -. Никогда не используйте опцию --daemon
.
Подробнее:
Не так просто использовать опцию --supervised
, как если бы вы запускали ее с помощью опции --daemon
. Этот контролируемый режим требует, чтобы файл службы и файл сокета взаимодействовали друг с другом, и он должен быть включен с помощью systemctl
.Вот файлы systemd (по этой ссылке все описано как включить):
https://github.com/gpg/gnupg/tree/master/doc/examples/systemd-user
Таким образом, я могу изменить gpg-agent.service
для использования пользовательской опции, а затем запустить агент gpg -с помощью systemctl --user start gpg-agent
. После этого все команды gpg будут использовать этот процесс вместо создания нового. Тоже посмотреть текущий идентификатор запущенного процесса gpg-agent
Я могу это сделать:
systemctl --user status gpg-agent
Итак, вышеизложенное ответило на мои предыдущие первый и второй вопросы. Второй вопрос не помешает запуску агента gpg -, но он не создаст дополнительный процесс агента gpg -, поскольку это то, что я пытался решить ранее, потому что у меня было запущено несколько процессов агента gpg -, которые вызывали ошибка проверки парольной фразы при запуске с опцией --daemon
; Ошибка, о которой я упоминал здесь, также описана в трекере ошибок gpg выше. Итак, моя цель во втором вопросе заключалась в том, чтобы предотвратить автоматический запуск агента gpg -каждой командой gpg, чтобы я мог запускать их вручную. Но мне больше не нужен этот метод при использовании опции --supervised
.