如何在运行“lein deploy clojars”时修复“gpg:解密失败:密钥不可用”?

时间:2016-03-13 15:43:51

标签: clojure leiningen gnupg

我多年来一直试图将库部署到clojars,而无需使用lein deploy clojars指定用户名和密码。但我最终得到以下错误消息:

gpg: gpg-agent is not available in this session
gpg: can't query passphrase in batch mode
gpg: Invalid passphrase; please try again ...
gpg: can't query passphrase in batch mode
gpg: Invalid passphrase; please try again ...
gpg: can't query passphrase in batch mode
gpg: decryption failed: secret key not available
Could not decrypt credentials from /Users/johan/.lein/credentials.clj.gpg
nil
See `lein help gpg` for how to install gpg.
No credentials found for clojars
See `lein help deploying` for how to configure credentials to avoid prompts.

我的~./lein/credentials.clj.gpg看起来像这样(未加密):

{ #"https://clojars.org/repo"
 {:username "<username>" :password "<password>"}}}

我知道用户名和密码是正确的(它们只是从1密码复制而来)。

正在运行gpg --list-keys给我:

/Users/myname/.gnupg/pubring.gpg
-------------------------------
pub   2048R/0486A2C5 2010-10-12
uid                  My Name <myname@somemail.com>
sub   2048R/0617110A 2010-10-12

我已经尝试在0486A2C50617110A)中指定~/.lein/profiles.clj:signing {:gpg-key "<key>"},但它没有任何区别。

我还确保在use-agent中取消注释~/.gnupg/gpg.conf,并且我还确保在我的计算机上安装了gpg-agentbrew install gpg-agent)。< / p>

更新1

正在运行gpg --list-secret-keys给我:

/Users/myname/.gnupg/secring.gpg
-------------------------------
sec   2048R/0486A2C5 2010-10-12
uid                  My Name <myname@somemail.com>
ssb   2048R/0617110A 2010-10-12

运行gpg --quiet --batch --decrypt ~/.lein/credentials.clj.gpg会提示我输入密码,然后产生未加密的结果。

更新2

我在Mac OS X El Capitan上使用gpg 1.4.20和gpg-agent 2.0.29(均使用brew安装)。

我错过了什么!?

3 个答案:

答案 0 :(得分:3)

我通过从brew(brew uninstall gpg)卸载gpg然后从gpgtools安装二进制文件来解决这个问题。然后我打开终端并创建了一个从gpg2到gpg的符号链接:

$ ln -s /usr/local/MacGPG2/bin/gpg2 /usr/local/MacGPG2/bin/gpg

然后我将/usr/local/MacGPG2/bin添加到PATH中的~/.profile。运行lein clojars deploy时,我现在得到一个图形用户界面,我输入密码,然后成功签署发布并发布工件。

答案 1 :(得分:0)

解决此问题的最简单方法是尝试使用带有--batch标志的gpg解密文件。我想您会发现您的代理已安装但尚未启动,或者可能配置不当。如果你可以让gpg与--batch一起使用,那么deploy命令就可以了。

答案 2 :(得分:0)

我的经验是,在末尾用-SNAPSHOT命名要部署的jar文件意味着您不必设置公钥/私钥。

相关问题