如何停止gpg 2.1产生许多代理(用于单元测试)

问题描述 投票:1回答:2

我刚刚更新到gnupg 2.1并且0install的单元测试现在运行得非常慢。似乎每次运行gnupg时,它都会产生一个新的gpg-agent进程。每个测试用例需要1秒钟,然后代理进程继续运行:

$ make
Ran: 272 tests in: 26.08 seconds.

(通常需要3秒左右)

$ ps x|grep gpg-agent
 8514 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-72f14da --use-standard-socket --daemon
 8543 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-19c19f2e --use-standard-socket --daemon
 8564 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-d641112 --use-standard-socket --daemon
 8570 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-399201f1 --use-standard-socket --daemon
 8581 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-36a69b79 --use-standard-socket --daemon
 8588 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-1636a396 --use-standard-socket --daemon
 8596 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-47c832e --use-standard-socket --daemon
 8602 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-3b1df330 --use-standard-socket --daemon
 8651 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-7c2e2f8 --use-standard-socket --daemon
 8662 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-2ecf7baa --use-standard-socket --daemon
 8672 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-3a613862 --use-standard-socket --daemon
 8696 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-3dc428bc --use-standard-socket --daemon
 8704 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-324a4b7d --use-standard-socket --daemon
 8760 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-3d953fbb --use-standard-socket --daemon
 8770 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-11bab9c2 --use-standard-socket --daemon
 8779 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-37699d43 --use-standard-socket --daemon
 8790 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-25d40809 --use-standard-socket --daemon
 8801 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-183d596b --use-standard-socket --daemon
 8811 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-1d4ed6aa --use-standard-socket --daemon
 8822 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-19587e45 --use-standard-socket --daemon
 8832 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-1775543e --use-standard-socket --daemon
 8849 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-555b9f5 --use-standard-socket --daemon
 8864 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-2b571a1d --use-standard-socket --daemon
 8872 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-254df8a7 --use-standard-socket --daemon
 8885 ?        Ss     0:00 gpg-agent --homedir /tmp/0install-test-34930097 --use-standard-socket --daemon
 8943 pts/3    R+     0:00 grep --color=auto gpg-agent

如何防止这些代理进程启动(或以其他方式使单元测试正常工作)?

gnupg
2个回答
2
投票

GnuPG 2.1总是启动代理,即使它实际上并不需要它。由于0install不需要访问密钥,我可以通过监听测试目录中的Unix套接字S.gpg-agent来解决问题。您需要按如下方式回复gpg:

  • 获得连接后,发送OK Pleased to meet you
  • HAVEKEY回应ERR 67108881 No secret key <GPG Agent>
  • AGENT_ID回应ERR 67109139 Unknown IPC command <GPG Agent>
  • OK回复所有其他输入。

这将0install单元测试运行时间从26s减少到1.1s,并且最后没有剩余的进程。

更新gnupg> = 2.1.13

它不再在GNUPGHOME中寻找插座。相反,您必须调用gpgconf --list-dirs来查找位置并避免每单位1次测试时间的惩罚。见:https://lists.gnupg.org/pipermail/gnupg-devel/2016-June/031192.html


0
投票

GnuPG 2.1 requires the agent for all private key operations,没有办法禁用它。改为使用GnuPG 1或2(仍然保持并行)。

您生成大量代理的原因是使用--homedir选项的不同主目录,否则将使用单个目录。从GnuPG 2.1开始,与代理的所有通信都通过GnuPG homedirectory中的套接字执行。

© www.soinside.com 2019 - 2024. All rights reserved.