我最近在Clojars上部署了一个库,并试图确保它已经签名,但是看不到任何证据表明这种方式。
以下是我遵循的步骤:
我已经安装了gpg(Linux系统),运行gpg-agent并生成了公钥/私钥对。我在注册时还将我的GPG公钥添加到了Clojars。
我创建了〜/ .lein / credentials.clj:
{#"https://clojars.org/repo"
{:username "midpeter444" :password "passw0rd"}}
然后我跑了:
gpg --default-recipient-self -e ~/.lein/credentials.clj > ~/.lein/credentials.clj.gpg
然后删除〜/ .lein / credentials.clj
在我的lein项目目录中,我跑了:
lein deploy clojars
它提示我两次(通过gpg-agent)输入我的密码,我做了,然后将jar上传到Clojars。
所以看起来它有用了,但是当我从Clojars网站上看到我的图书馆或者在我从Clojars下载它之后在图书馆看到我的图书馆时,我看不到任何证据表明它已签名或是否失败。
我是否还需要做其他事情,比如在project.clj中添加一个注释以便以某种方式签名?
答案 0 :(得分:2)
如果jar没有签名,您会看到如下消息:
- /home/clojars/repo/blah/blah/0.0.1/blah-0.0.1.jar 未签名。
答案 1 :(得分:1)
在对其进行研究之后,如果您已将PGP公钥添加到Clojars帐户,则lein 2将自动签署您的罐子。如果您运行lein deps :verify
,它会告诉您该库是否已签名。
因此,您可以创建一个使用已发布库的项目并运行此命令。
示例输出:
$ lein deps :verify
:signed [criterium "0.3.1"]
:unsigned [enlive "1.0.1"]
:signed [org.clojure/tools.macro "0.1.1"]
:signed [org.clojure/clojure "1.5.0"]
:bad-signature [thornydev/go-lightly "0.4.0"]
我看到我的(轻微地)标记为签名不好,所以现在我需要找出原因。 Clojars网站没有告诉我这个(或者至少我不知道在哪里寻找它),所以我认为使用lein deps :verify
是更好的答案。
[更新]:错误的签名是因为我尝试在之后重新部署了一个库(相同版本)我已经提升了它,发现了Clojars中的一个错误系统(目前正在修复)。
如果你得到一个:bad-signature
,你需要重新部署到Clojars(在Clojars之后删除了坏lib)。然后要检查签名是否正确,请确保从本地〜/ .m2仓库中删除该库,以便下载新库并检查其是否有效签名。