GnuPG Can not Sign Commit with Magit in Terminal Text Mode
- tags: Emacs,GnuPG Pinentry,GnuPG,GnuPG Agent
There is a little bit more background here: I’m using Windows Subsystem Linux(WSL) now, which means I was running Emacs in a virtual machine with Debian Linux distro.
And also I ran Emacs in GUI mode with WSL, the pinentry for GnuPG Agent is: /usr/bin/pinentry-gtk2
,
everything was prefect.
This morning I couldn’t commit with Magit in Emacs, when I was running my Emacs in Terminal Text Mode.
The first thing I had done is change the pinentry:
sudo apt install pinentry-tty
sudo update-alternatives --config pinentry
# Choice /usr/bin/pinentry-tty
That not work, even in the bash without Magit, then I tried:
export GPG_TTY=$(tty)
gpg-connect-agent updatestartuptty /bye >/dev/null
Then I could commit in bash, but still couldn’t commit with Magit.
Finally I realized that I executed above commands that still in the Emacs, with vterm. So:
- I quit the Emacs.
- Executed the above commands.
- Start Emacs again.
And it works, for temporary, as GnuPG Agent has cached the credential, we just didn’t need to enter password.