私はPGPキーでgitコミットに署名するのが好きで、git commit -S
PGPキーパスワードを求めるのではなく、gitが停止し始めたときにかなりショックを受けました。数ヶ月間GPG設定を変更しておらず、それ以来何の問題もなく何度もコミットしました。また、gpgを使用して秘密鍵を表示しようとするとgpg -K
中断されます。ただし、gpg -k
公開鍵ビューを実行すると、通常はリストが返されます。誰かがこの問題の原因と解決策を理解できることを願っています。
答え1
私は正確な問題に直面しました(OSX Sierra 10.12.6、gpg / GnuPG 2.2.5)
中断されるコマンド:
gpg -K # --list-secret-keys
gpg -d # --decrypt
gpg --edit-key
gpgconf --kill gpg-agent
私の解決策は言及されたものと同じです男上記の他のほとんどの方法と同じです(例:gpg-agentの終了)。GPGエージェントを再起動する方法また中断されます。
# Solution
pkill -9 gpg-agent
その後、git commitに署名するために述べたようにtty envを設定しました。カス上にも上にも上にgpgがコミットオブジェクトに署名できませんでした。。
export GPG_TTY=$(tty)
答え2
$ ps aux | grep -E "gpg-agent"
alper 28970 0.0 92436 3284 15:31 0:00 /usr/bin/gpg-agent --supervised
この出力変数には28970
。
from subprocess import Popen, PIPE
import signal
def kill_process_by_name(process_name):
p1 = Popen(["ps", "auxww"], stdout=PIPE)
p2 = Popen(["grep", "-E", process_name], stdin=p1.stdout, stdout=PIPE)
p1.stdout.close() # noqa
p3 = Popen(["awk", "{print $2}"], stdin=p2.stdout, stdout=PIPE)
p2.stdout.close()
output = p3.communicate()[0].decode("utf-8").strip()
lines = output.splitlines() # awk may return more than one pid number
for pid in lines:
if pid.isnumeric():
os.kill(int(pid), signal.SIGKILL)