将 Scala.js 库发布到 Sonatype 时出现无效数据包 GPG 错误

Invalid packet GPG Error when publishing Scala.js library to Sonatype

我正在尝试将我的 Scala.js library 发布到 Sonatype 并遵循以下指南:

然而,在尝试(最终)命令 sbt tarjanJS/publishSignedsbt publishSigned 时,我总是 运行 遇到这些错误:

对于sbt tarjanJS/publishSigned:

sbt:scalajs-cross-compile-tarjan> tarjanJS/publishSigned
[info] Wrote /home/florian/Documents/scalajs-cross-compile-tarjan/js/target/scala-2.12/scala-tarjan_sjs0.6_2.12-0.1-SNAPSHOT.pom
[error] gpg: [don't know]: invalid packet (ctb=2d)
[error] gpg: keydb_search failed: Invalid packet
[error] gpg: no default secret key: Invalid packet
[error] gpg: signing failed: Invalid packet
[error] java.lang.RuntimeException: Failure running gpg --detach-sign.  Exit code: 2
[error]     at scala.sys.package$.error(package.scala:27)
[error]     at com.typesafe.sbt.pgp.CommandLineGpgSigner.sign(PgpSigner.scala:27)
[error]     at com.typesafe.sbt.pgp.PgpSettings$.$anonfun$signingSettings(PgpSettings.scala:157)
[error]     at scala.collection.TraversableLike.$anonfun$flatMap(TraversableLike.scala:241)
[error]     at scala.collection.immutable.Map$Map4.foreach(Map.scala:210)
[error]     at scala.collection.TraversableLike.flatMap(TraversableLike.scala:241)
[error]     at scala.collection.TraversableLike.flatMap$(TraversableLike.scala:238)
[error]     at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
[error]     at com.typesafe.sbt.pgp.PgpSettings$.$anonfun$signingSettings(PgpSettings.scala:154)
[error]     at scala.Function1.$anonfun$compose(Function1.scala:44)
[error]     at sbt.internal.util.$tilde$greater.$anonfun$$u2219(TypeFunctions.scala:39)
[error]     at sbt.std.Transform$$anon.work(System.scala:66)
[error]     at sbt.Execute.$anonfun$submit(Execute.scala:262)
[error]     at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error]     at sbt.Execute.work(Execute.scala:271)
[error]     at sbt.Execute.$anonfun$submit(Execute.scala:262)
[error]     at sbt.ConcurrentRestrictions$$anon.$anonfun$submitValid(ConcurrentRestrictions.scala:174)
[error]     at sbt.CompletionService$$anon.call(CompletionService.scala:36)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error]     at java.lang.Thread.run(Thread.java:748)
[error] (tarjanJS / signedArtifacts) Failure running gpg --detach-sign.  Exit code: 2

对于sbt publishSigned:

bt:scalajs-cross-compile-tarjan> publishSigned
[info] Wrote /home/florian/Documents/scalajs-cross-compile-tarjan/js/target/scala-2.12/scala-tarjan_sjs0.6_2.12-0.1-SNAPSHOT.pom
[info] Wrote /home/florian/Documents/scalajs-cross-compile-tarjan/jvm/target/scala-2.12/scala-tarjan_2.12-0.1-SNAPSHOT.pom
[info] Wrote /home/florian/Documents/scalajs-cross-compile-tarjan/target/scala-2.12/scalajs-cross-compile-tarjan_2.12-0.1.0-SNAPSHOT.pom
[error] gpg: [don't know]: invalid packet (ctb=2d)
[error] gpg: keydb_search failed: Invalid packet
[error] gpg: no default secret key: Invalid packet
[error] gpg: signing failed: Invalid packet
[error] gpg: [don't know]: invalid packet (ctb=2d)
[error] gpg: keydb_search failed: Invalid packet
[error] gpg: no default secret key: Invalid packet
[error] gpg: signing failed: Invalid packet
[error] gpg: [don't know]: invalid packet (ctb=2d)
[error] gpg: keydb_search failed: Invalid packet
[error] gpg: no default secret key: Invalid packet
[error] gpg: signing failed: Invalid packet
[error] java.lang.RuntimeException: Failure running gpg --detach-sign.  Exit code: 2
[error]     at scala.sys.package$.error(package.scala:27)
[error]     at com.typesafe.sbt.pgp.CommandLineGpgSigner.sign(PgpSigner.scala:27)
[error]     at com.typesafe.sbt.pgp.PgpSettings$.$anonfun$signingSettings(PgpSettings.scala:157)
[error]     at scala.collection.TraversableLike.$anonfun$flatMap(TraversableLike.scala:241)
[error]     at scala.collection.immutable.Map$Map4.foreach(Map.scala:210)
[error]     at scala.collection.TraversableLike.flatMap(TraversableLike.scala:241)
[error]     at scala.collection.TraversableLike.flatMap$(TraversableLike.scala:238)
[error]     at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
[error]     at com.typesafe.sbt.pgp.PgpSettings$.$anonfun$signingSettings(PgpSettings.scala:154)
[error]     at scala.Function1.$anonfun$compose(Function1.scala:44)
[error]     at sbt.internal.util.$tilde$greater.$anonfun$$u2219(TypeFunctions.scala:39)
[error]     at sbt.std.Transform$$anon.work(System.scala:66)
[error]     at sbt.Execute.$anonfun$submit(Execute.scala:262)
[error]     at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error]     at sbt.Execute.work(Execute.scala:271)
[error]     at sbt.Execute.$anonfun$submit(Execute.scala:262)
[error]     at sbt.ConcurrentRestrictions$$anon.$anonfun$submitValid(ConcurrentRestrictions.scala:174)
[error]     at sbt.CompletionService$$anon.call(CompletionService.scala:36)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error]     at java.lang.Thread.run(Thread.java:748)
[error] java.lang.RuntimeException: Failure running gpg --detach-sign.  Exit code: 2
[error]     at scala.sys.package$.error(package.scala:27)
[error]     at com.typesafe.sbt.pgp.CommandLineGpgSigner.sign(PgpSigner.scala:27)
[error]     at com.typesafe.sbt.pgp.PgpSettings$.$anonfun$signingSettings(PgpSettings.scala:157)
[error]     at scala.collection.TraversableLike.$anonfun$flatMap(TraversableLike.scala:241)
[error]     at scala.collection.immutable.Map$Map4.foreach(Map.scala:210)
[error]     at scala.collection.TraversableLike.flatMap(TraversableLike.scala:241)
[error]     at scala.collection.TraversableLike.flatMap$(TraversableLike.scala:238)
[error]     at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
[error]     at com.typesafe.sbt.pgp.PgpSettings$.$anonfun$signingSettings(PgpSettings.scala:154)
[error]     at scala.Function1.$anonfun$compose(Function1.scala:44)
[error]     at sbt.internal.util.$tilde$greater.$anonfun$$u2219(TypeFunctions.scala:39)
[error]     at sbt.std.Transform$$anon.work(System.scala:66)
[error]     at sbt.Execute.$anonfun$submit(Execute.scala:262)
[error]     at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error]     at sbt.Execute.work(Execute.scala:271)
[error]     at sbt.Execute.$anonfun$submit(Execute.scala:262)
[error]     at sbt.ConcurrentRestrictions$$anon.$anonfun$submitValid(ConcurrentRestrictions.scala:174)
[error]     at sbt.CompletionService$$anon.call(CompletionService.scala:36)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error]     at java.lang.Thread.run(Thread.java:748)
[error] java.lang.RuntimeException: Failure running gpg --detach-sign.  Exit code: 2
[error]     at scala.sys.package$.error(package.scala:27)
[error]     at com.typesafe.sbt.pgp.CommandLineGpgSigner.sign(PgpSigner.scala:27)
[error]     at com.typesafe.sbt.pgp.PgpSettings$.$anonfun$signingSettings(PgpSettings.scala:157)
[error]     at scala.collection.TraversableLike.$anonfun$flatMap(TraversableLike.scala:241)
[error]     at scala.collection.immutable.Map$Map4.foreach(Map.scala:210)
[error]     at scala.collection.TraversableLike.flatMap(TraversableLike.scala:241)
[error]     at scala.collection.TraversableLike.flatMap$(TraversableLike.scala:238)
[error]     at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
[error]     at com.typesafe.sbt.pgp.PgpSettings$.$anonfun$signingSettings(PgpSettings.scala:154)
[error]     at scala.Function1.$anonfun$compose(Function1.scala:44)
[error]     at sbt.internal.util.$tilde$greater.$anonfun$$u2219(TypeFunctions.scala:39)
[error]     at sbt.std.Transform$$anon.work(System.scala:66)
[error]     at sbt.Execute.$anonfun$submit(Execute.scala:262)
[error]     at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error]     at sbt.Execute.work(Execute.scala:271)
[error]     at sbt.Execute.$anonfun$submit(Execute.scala:262)
[error]     at sbt.ConcurrentRestrictions$$anon.$anonfun$submitValid(ConcurrentRestrictions.scala:174)
[error]     at sbt.CompletionService$$anon.call(CompletionService.scala:36)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error]     at java.lang.Thread.run(Thread.java:748)
[error] (tarjanJS / signedArtifacts) Failure running gpg --detach-sign.  Exit code: 2
[error] (tarjanJVM / signedArtifacts) Failure running gpg --detach-sign.  Exit code: 2
[error] (signedArtifacts) Failure running gpg --detach-sign.  Exit code: 2
[error] Total time: 1 s, completed Nov 3, 2018 1:22:02 PM

关于在哪里搜索错误的任何建议?我很确定我逐字逐句地按照说明进行了多次操作...

我的 gpg 版本:

gpg (GnuPG) 2.2.4
libgcrypt 1.8.1
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: /home/florian/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

这些是我的 .gnupg 文件夹中的文件:

*.gnupg* ls
crls.d  openpgp-revocs.d  private-keys-v1.d  pubring.kbx  pubring.kbx~  sshcontrol  trustdb.gpg

并且 private-keys-v1.d 文件夹包含两个 .key 文件。

当 运行ning gpg --list-keys 我得到以下信息:

~ gpg --list-keys
/home/florian/.gnupg/pubring.kbx
--------------------------------
pub   rsa3072 2018-11-03 [SC] [expires: 2020-11-02]
      XXXXXXXXXXXXXXXXXXXXXXXXXXXX
uid           [ultimate] Florian Baierl <fbaierl1@gmail.com>
sub   rsa3072 2018-11-03 [E] [expires: 2020-11-02]

我想知道这 pubring.kbx 是否有问题?在教程中它说它应该打印出类似 pubring.gpg.

的内容

我的问题现已解决 - 比我最初想象的要容易得多:我的 build.sbt 搞砸了。

这里是解决这个问题的提交,如果其他人有兴趣:e7b430295e144adb7e9dd55c9054465b15c73467