2024年Cljure状态调查!中分享您的想法。

欢迎!请参阅关于 页面了解更多关于如何使用本站的信息。

0 投票
工具

DBFS(Databricks文件系统)未能正确实现POSIX权限。
特别是bash标志“-w”无法正确检测非可写项目目录。

因此,在您的情况中,尝试在DBFS上启动Cljure时会尝试将.cpcache写入当前目录,由于该目录实际上是只读的,因此写入失败,无法覆盖它。

以下详细信息与错误信息
https://clojurians.slack.com/archives/C03S1KBA2/p1726750856210489

在DBFS上更改Unix文件权限也失败

我认为引入CLJ_PROJECT_CACHE的建议将修复我的当前情况。

1 答案

0 投票

听起来像是DataBricks的问题吗?

是的,或者我们接受"-w"不是一个可靠的方式来检测"只读"目录,我们找到一种方法,使得Clojure脚本不依赖于它,而没有任何其他目录的"强制"方式。

不确定是否有其他文件系统存在类似问题。

DBFS不支持任何"文件权限",所以它永远无法在DBFS中得到解决
当前的逻辑也会阻止在例如"文件系统满"的情况下更改.cpcache的位置。(可以写,但是写不进去)
或者当原因不是"只读"时,我不喜欢它的默认位置。
类路径通常很长,必须传递给Java进程。您可以将其传递到命令行(但许多系统有进程行长度限制),或者您可以将其写入一个文件,并以这种方式传递。Clojure CLI做了后者,但这需要写入某个位置。文件可以写入多个位置,并且有逻辑来检测写入该位置的正确位置。如果系统报告可以写入但不能,或者无法写入,我不知道CLI应该对此做什么(似乎对下载Maven库、下载git库、准备git库和CLI的工具.deps的许多其他功能有问题)。

尝试写入文件以测试它们是否可以成功写入,但这不起作用,因为我们用文件的存在来检测缓存的文件是否已经存在。不喜欢添加更多的环境变量,因为已经有很多配置选项了,在很多情况下,这种逻辑存在于多个位置(bash 和 tools.deps clojure),这些位置必须保持同步,所有读取/写入缓存的代码都必须达成一致。所有这些选项程度不同地都是不好的。
...