Conflict gpg-agent

GitHubにGPG認証を利用しています。

さっきbrew upgradeをしていて、たぶんgpg関連のアップデートがあって恐らくそれがきっかけと思うんですが、git commitができなくなりました。

調査のためgpgコマンドをいじっていたら以下のエラーが出ました。

gpg: starting migration from earlier GnuPG versions  
gpg: *警告*: サーバ'gpg-agent'はこちらより古いです(2.0.30 < 2.1.20)  
gpg: error: GnuPG agent version "2.0.30" is too old.  
gpg: Please make sure that a recent gpg-agent is running.  
gpg: (restarting the user session may achieve this.)  
gpg: migration aborted  
...

gpg-agentのバージョンは2.1.20になっています。

$ gpg-agent --version
gpg-agent (GnuPG) 2.1.20  
libgcrypt 1.7.6  
Copyright (C) 2017 Free Software Foundation, Inc.  
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>  
This is free software: you are free to change and redistribute it.  
There is NO WARRANTY, to the extent permitted by law.  

brewへのリンクも貼ってある。

$ ls -l `which gpg-agent`
lrwxr-xr-x  1 licorice  admin  36  4 22 12:23 /usr/local/bin/gpg-agent@ -> ../Cellar/gnupg/2.1.20/bin/gpg-agent  

うーん。起動しているgpg-agentを見てみます。

$ pgrep -fl gpg-agent
458 /bin/bash /usr/local/MacGPG2/libexec/shutdown-gpg-agent  
598 /usr/local/MacGPG2/bin/gpg-agent --daemon  

ん?なんかpathが違う。

バージョンを見たら古かった。

$ /usr/local/MacGPG2/bin/gpg-agent --version
gpg-agent (GnuPG/MacGPG2) 2.0.30  
libgcrypt 1.7.0  
Copyright (C) 2015 Free Software Foundation, Inc.  
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>  
This is free software: you are free to change and redistribute it.  
There is NO WARRANTY, to the extent permitted by law.  

というわけでgpg-agentを再起動します。

kill -KILL 598  
kill -KILL 458

gpg-agent --daemon  

解決! ✨

たぶんですが最初にGPGの導入作業をしたときに色々試行錯誤してbrewで入れたものとGUIで入れたものがごっちゃになっていたため発生したと思われます...。