2016-03-13 82 views
3

我一直在努力將圖書館部署到clojars,而無需使用lein deploy clojars指定用戶名和密碼。但我最終出現以下錯誤信息:運行「lein deploy clojars」時如何解決「gpg:解密失敗:密鑰不可用」?

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>"}}} 

我知道用戶名和密碼是正確的(他們只是從的1Password複製) 。

運行gpg --list-keys給我:

/Users/myname/.gnupg/pubring.gpg 
------------------------------- 
pub 2048R/0486A2C5 2010-10-12 
uid     My Name <[email protected]> 
sub 2048R/0617110A 2010-10-12 

我已經試過specifiying在~/.lein/profiles.clj:signing {:gpg-key "<key>"})都0486A2C50617110A,但它並沒有任何區別。

我也確信use-agent是取消註釋在~/.gnupg/gpg.conf而且我還相信,gpg-agent安裝在我的機器(brew install gpg-agent)上。

更新1

運行gpg --list-secret-keys給我:

/Users/myname/.gnupg/secring.gpg 
------------------------------- 
sec 2048R/0486A2C5 2010-10-12 
uid     My Name <[email protected]> 
ssb 2048R/0617110A 2010-10-12 

運行gpg --quiet --batch --decrypt ~/.lein/credentials.clj.gpg提示我要我的密碼,然後產生了未加密的結果。

更新2

我在Mac OS X埃爾卡皮坦使用GPG 1.4.20和GPG代理2.0.29(均使用BREW安裝)。

我錯過了什麼!?

+0

你可以提供完整的命令行與哪個GnuPG被稱爲?可能GnuPG會在另一個用戶的環境中運行? 'gpg --list-keys'打印公鑰,解密需要密鑰。什麼是'gpg --list-secret-keys'的outptu? –

+0

我已更新問題 – Johan

+0

由lein運行時,它不會提示輸入密碼,這就是爲什麼需要代理。它是通過相同的TTY還是通過GUI彈出提示? – noisesmith

回答

3

我通過從brew中卸載gpg(brew uninstall gpg)解決此問題,然後從gpgtools安裝二進制文件。然後我打開終端,創造了從gpg2到GPG的符號鏈接:

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

然後我在~/.profile添加/usr/local/MacGPG2/binPATH。在運行lein clojars deploy時,我現在得到一個圖形用戶界面,在該界面中輸入密碼,然後成功簽署發行版併發布工件。

0

解決此問題的最簡單方法是嘗試使用gpg和--batch標誌解密文件。我想您會發現您的代理已安裝,但尚未啓動,或者可能配置不正確。如果你可以讓gpg與--batch一起工作,那麼deploy命令將起作用。

+0

它在我做「gpg --use-agent --quiet --batch --decrypt〜/ .lein/credentials.clj.gpg」時起作用,但是當它要簽署工件時(當我運行「lein deploy clojars」)它說:「gpg:代理程序的問題 - 禁用代理程序的使用」並且失敗 – Johan

0

我的經驗是,要將部署的想要部署的jar文件命名爲-SNAPSHOT意味着您不必設置公鑰/私鑰。

+0

正確,這也適用於我,但我想部署非快照版本。 – Johan