请在2024 年 Clojure 状态调查中分享您的想法!

欢迎!请参看关于页面了解更多关于此功能的信息。

0
工具
编辑

我在一个基于 RHEL7 docker 镜像的 clojure 1.10.1.483 上进行了全新安装,将库放在了 /usr/local/lib/clojure/deps.edn(安装层配置)中,并修改了指向我们公司 Artifactory 仓库的配置。

然而,尽管 -Sverbose 选项表示文件位于 config_paths 中,但若在任何其他目录中运行,这些库都不会被选取。

例如 clojure -e “(clojure-version)”

  • 在安装目录内运行时可以正常工作,因为 deps.edn 被视为“project”配置。这表明配置本身没有问题。
  • 在其他任何目录中都会失败,通常会提示无法连接到默认仓库(如 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文件,该文件实际上替换了用户级别的文件。这就是我们为所有开发者提供一个一致定制的环境的方式。
...