🔖
署名付きcommitでerror: gpg failed to sign the dataになるとき.
git commit
すると,時々下記のエラーが発生する.
署名付きで原因を調べるため$ echo 'test'|gpg --clearsign
する.
$ git commit -S -m 'massage'
error: gpg failed to sign the data
fatal: failed to write commit object
①Inappropriate ioctl for deviceの場合
$ echo 'test'|gpg --clearsign
gpg: 署名に失敗しました: Inappropriate ioctl for device
gpg: [stdin]: clear-sign failed: Inappropriate ioctl for device
- 改善例
~/.zshrcにexport GPG_TTY=$TTY
を追記し
実行中のgpg-agentを停止
$ gpgconf --kill gpg-agent
②Screen or window too smallの場合
$ echo 'test'|gpg --clearsign
gpg: 署名に失敗しました: Screen or window too small
gpg: [stdin]: clear-sign failed: Screen or window too small
上記エラーのときは,ターミナルのウィンドウサイズが小さすぎてpinentry-cursesが起動しないのが原因なので,
gpg-agentが呼び出すpinentry programをpinentry-macに変更する(pinentry-macは入力画面がGUIで表示されるため.)
- 改善例
$ brew install pinentry-mac
//pinentryプログラムを変更
$ echo 'pinentry-program /usr/local/bin/pinentry-mac' > ~/.gnupg/gpg-agent.conf
//実行中のgpg-agentを停止
$ gpgconf --kill gpg-agent
[gpgの全体的な説明と使い方]
[①の参考文献]
Discussion