【IntelliJ IDEA + macOS】GPGで署名してgit commitするとエラーが発生する問題の対処法

2023/03/22 17:12公開
2024/02/09 23:14最終更新
Table of Contents
  1. 問題発生
  2. 原因
  3. 対処法

問題発生

IntelliJ IDEA (というか全Jetbrains IDEで共通) でGitのコミットを署名する設定を、Macでこれに従って設定したところ、以下のようなエラーが出てコミットできなくなった。

error: gpg failed to sign the data
fatal: failed to write commit object

原因

いろいろ調べた結果、パスワード入力用のダイアログの表示に失敗している様子。

GPGではセキュリティーのためか、pinentryというソフトでGUIのパスフレーズ入力ダイアログを出し、コンソールに直接パスフレーズを入力することを避けるようにしている。そのmacOS版であるpinentry-macをインストールすると、pinentrypinentry-macという2種類のコマンドが実行できるようになる。しかし、なんと pinentryの方はmacOSでは動かない。

デフォルトではこのpinentryの方が使用されるようになっているためにエラーが発生している様子。~/.gnupg/gpg-agent.confでpinentryのパスを変更できるらしいが、なぜか設定しても反映されない。(いろいろ試したものの…)

そこで、シンボリックリンクの作成という力技で対処することにする。

対処法

まず、現在設定されているpinentryのパス と、 pinentry-macのパス を調査する。

前者は以下のコマンドで調べられる。

% gpgconf
gpg:OpenPGP:/opt/homebrew/Cellar/gnupg/2.4.0/bin/gpg
...
pinentry:パスフレーズ入力:/opt/homebrew/opt/pinentry/bin/pinentry

上の実行結果でいうと、/opt/homebrew/opt/pinentry/bin/pinentryの部分が現在設定されているパス。そして、このファイルを削除する。

% rm <現在設定されているpinentryのパス>

次に、pinentry-macのパスを調べる。

% which pinentry-mac
/opt/homebrew/bin/pinentry-mac

最後に、以下のコマンドでシンボリックリンクを作成する。

% ln -s <pinentry-macのパス> <現在設定されているpinentryのパス>

これでコミットできるようになるはず。