gpt4 book ai didi

jar - Clojure:如何使 leiningen 构建可重现?

转载 作者:行者123 更新时间:2023-12-02 02:33:08 33 4
gpt4 key购买 nike

简介

reproducible-builds.org所述,最佳实践是能够生成一个构建,当任何人在任何机器/操作系统上随时提供相同的源代码时,可以重新创建该构建。如何使用 Clojure/Leiningen 环境实现此目标?

示例

使用 Leiningen 创建项目和构建 .jar 文件的非常基本的示例用法:

lein new app hello
cd hello
lein uberjar
sha256sum target/uberjar/hello-0.1.0-SNAPSHOT-standalone.jar

这会输出某个 sha256 哈希值,其中在 .jar 文件中包含非确定性。如果您立即重新运行构建而不更改任何源文件,则校验和哈希无论如何都会有所不同:

lein uberjar
sha256sum target/uberjar/hello-0.1.0-SNAPSHOT-standalone.jar

问题

如何创建一个 .jar 文件,该文件在再次运行时会产生相同的校验和哈希,例如在未来某个地方的不同 Linux 发行版上?

最佳答案

Jar 文件不是确定性的,但其内容是确定性的。尝试一下

unzip -c hello-0.1.0-SNAPSHOT-standalone.jar | md5sum

关于jar - Clojure:如何使 leiningen 构建可重现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64770080/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com