2024 年 Clojure 状态调查! 中分享你的想法。

欢迎!请查看 关于 页面了解有关工作方式的更多信息。

0
工具
编辑

我在 RHEL7 Docker 图像上安装了 clojure 1.10.1.483,并将仓库修改到了 /usr/local/lib/clojure/deps.edn 中(安装级别的配置),使其指向我们公司的企业仓库。

然而,即使使用 -Sverbose 选项表示文件在 config_paths 中,当在目录外部运行时,这些仓库也无法被识别。

例如,使用 clojure -e “(clojure-version)”

  • 在安装目录内部运行是有效的,因为此时 deps.edn 被识别为“项目”配置。这表明配置本身没有什么问题。
  • 在其他任何目录下运行将失败,并指出无法连接到默认仓库(repo1.maven.org 等),这些仓库在任何配置文件中都不存在。

用户级别的配置默认为(全部注释),所以应该不会产生影响,但 -Srepro 选项没有作用。

我只能得出结论:安装级别的配置没有被正确识别。

在这里有谁可以提供一些指导吗?

1 答案

+1

已选择
 
最佳答案

我相信 tools.deps.alpha 现在将系统配置“嵌入”到其发行版中,而“system”位置的“实际”deps.edn文件仅用于向后兼容,并且现在实际并没有使用。

无论如何,你绝对不应该修改“system”版本,只有个人或项目版本。

我敢肯定,config_paths 和 :config-files 现在只为遗留目的提供,实际上并不反映依赖项的处理方式--例如,即使没有这样的文件,它们也会包括本地的 deps.edn。
谢谢。这很有趣,我觉得文档并没有真正同步。这有点不幸,因为它移除在企业环境(没有外部互联网/maven 访问)调整安装以使其对每个人“只需按几下”的能力。

按照这一方针的其它潜在改进是
- 允许自定义下载URL(例如通过环境变量)或指定一个离线的tarball进行安装
- 提供一个不需要root权限的本地安装选项。这也可以通过环境变量来实现,例如查找 CLJ_HOME 或类似项。
我们在工作中使用CLJ_CONFIG环境变量来指向我们的monorepo中一个目录,这个目录包含一个deps.edn文件,该文件本质上替代了用户级别的文件。这就是我们为所有开发者提供一致定制化环境的方式。
...