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

欢迎!请查看关于页面获取更多关于如何使用本网站的信息。

0
工具

DBFS(数据溴克文件系统)没有正确实现 POSIX 权限。
特别是 bash 标志 “-w” 无法正确检测非可写项目目录。

因此,在我这个案例中,尝试在 DBFS 上启动 Clojure 时,会尝试将 .cpcache 写入当前目录,但是由于该目录实际上是只读的,因此失败,并且无法覆盖。

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

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

只是看到了这个相关的 jira
https://clojure.atlassian.net/browse/TDEPS-119
我认为引入 CLJ_PROJECT_CACHE 的原始建议可以解决我当前的问题。

1 答案

0

听起来像是 DataBricks 的问题?

是的,或者我们接受 "-w" 不是检测 "只读" 目录的可靠方式,我们找到一种方式,Clojure 脚本不依赖于它,而无需有“强制”其他目录的方法。

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

DBFS 不支持任何 "文件权限",所以它永远无法在 DBFS 中解决。
当前逻辑也不允许在文件系统“满”时更改 .cpcache 的位置,例如。(满,但可写)
或者当原因不是“只读”时,我不喜欢它的默认位置。
类路径通常很长,必须传递给Java进程。您可以选择将其传递到命令行(但许多系统有进程行长度限制),或者您可以将类路径写入一个文件,并通过这种方式传递。Clojure CLI执行后者,但这要求在某个地方写入一个文件。文件可以写入多个位置,并且需要逻辑来检测正确写入的位置。如果系统报告可以写入但不能写入,或者无法写入,我并不知道CLI将如何处理这种情况(它似乎会影响到下载Maven库、下载git库、准备git库以及其他CLI/tools.deps的许多功能)。

尝试写入文件以检查它们是否可以写入不会成功,因为我们使用文件的存在来检测缓存文件是否存在。添加更多的环境变量不受欢迎——已经有太多的配置选项,并且在某些情况下,此逻辑存在于多个位置(bash和tools.deps clojure),需要保持同步,并且所有读取/写入缓存代码必须达成一致。所有这些选项都有不同程度的弊端。
...