参与2024年Clojure状态调查!点击此处

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

0
ago 工具

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

因此,在我的情况下,尝试在DBFS上启动Clojure会将.cpcache文件写入当前目录,但由于该目录实际上是只读的,因此失败且不能被覆盖。

有关详细信息和错误消息,请参见此处
https://clojurians.slack.com/archives/C03S1KBA2/p1726750856210489

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

ago
只看到了这个相关的jira
https://clojure.atlassian.net/browse/TDEPS-119
ago
我认为引入CLJ_PROJECT_CACHE的原始提议将修复我的当前情况。

1 个答案

0

听起来像是一个DataBricks问题?

是的,或者我们承认“-w”并不是检测“只读”目录的可靠方式,我们找到了一个让Clojure脚本不依赖它的方法,而且不用“强制”改变其他目录。

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

DBFS不支持任何“文件权限”,所以这个问题永远不会在DBFS中解决。
当前的逻辑不会允许在文件系统“满”的情况下“更改” .cpcache 的位置,例如(空间已满但可写)。
或者当由于“只读”之外的原因我不喜欢其默认位置。
类路径通常非常长,必须传送给Java进程。你可以通过命令行传递(但许多系统有进程行长度限制),或者你可以将类路径写入文件,并通过这种方式传递。Clojure CLI做了后者,但这需要写入某个地方的文件。可以写入多个位置,并且有逻辑来确定写入的正确位置。如果系统报告可以写入但不能,或者不能写入,我不知道CLI对此可以做些什么(对于下载Maven库,下载git库,准备git库,CLI的工具.deps的很多其他功能来说,似乎存在问题)。

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