分享您的看法,请填写2024年Clojure调查问卷!

欢迎!请查看关于页面,以了解更多关于它是如何工作的信息。

+4
工具
重新标记

不需要显式设置XDG_CONFIG_HOME,遵循XDG规范的工具应直接写入$HOME/.config/clojure

目前,如果未设置XDG_CONFIG_HOME,它将直接写入$HOME/.clojure

更多信息在这里
https://clojureverse.org/t/opinion-about-xdg-support-by-the-clojure-tools-deps-cli/9814/3

Do XDG systems always have $HOME/.config even if it is empty? If not, then what if the CLI were the first tool to run in a new user account -- it wouldn't find $HOME/.config and XDG_CONFIG_HOME wouldn't be set, so wouldn't it deduce this was not an XDG system and write to $HOME/.clojure instead of $HOME/.config/clojure? (this question would apply to all tools in such an environment, so I'm wondering what creates $HOME/.config in the first place)
根据arch wiki,'only XDG_RUNTIME_DIR is set by default through pam_systemd(8). It is up to the user to explicitly define the other variables according to the specification.'


https://wiki.archlinux.org/title/XDG_Base_Directory

但在现实中,如果你查看应用程序对 XDG 规范的实现方式,大多数都只是遵循逻辑而没有检查 XDG_RUNTIME_DIR,我认为是这样。

1. 如果存在 HOME/.clojure,则使用旧路径。
2. 否则使用 XDG 规范,(或 (getenv XDG_CONFIG_HOME)  (path HOME/.config/clojure))

XDG_CONFIG_HOME(和其他 xdg 变量)在大多数发行版中未设置,应该使用定义的默认值代替。这是使得 clj 工具感到困惑的部分,因为它应该直接写入 my HOME/.config/clojure 而不是回退到旧路径。
在一个任意的系统上,在安装 Clojure 之前,$HOME/.clojure 将不会存在 -- 因此根据你评论中的逻辑,你实际上是在请求 Clojure CLI 在所有系统上都切换到 XDG。

我误解你了吗?

1 个答案

0

问题仍然是:Clojure CLI 如何明确知道你希望使用 XDG 配置选项。如果对此问题有明确的答案,我很乐意使用它来选择此行为。我们不会将其更改为默认值。

另一个选项是有一个 Clojure CLI 特定的环境变量,你可以设置它来执行该操作(但你需要采取该行动)。

强制用户使用 XDG 的担忧非常明显。

每个系统好像默认都设置了不同的XDG变量版本(Nix在Darwin上设置了XDG_CONFIG_DIRS和XDG_DATA_DIRS)。

如果我们更愿意依赖于XDG的命名和规范,我们可以改进我们对于非歧义用例的覆盖。

更具体地说

            如果设置了$CLJ_CONFIG,则使用$CLJ_CONFIG(显式覆盖)
            如果设置了任何$XDG_*,则遵循XDG规范(未设置时为$XDG_CONFIG_HOME/clojure或~/.config/clojure)-- **更改**
            否则使用$HOME/.clojure(最常用)

注意:XDG_*也可能仅代表现有的7个已记录变量
by
我越思考、阅读关于这个规范(xdg基本目录),就越觉得它更像是应用的选择,决定是否遵循规范,而系统在这方面没有责任。

因此,添加一个标志的想法可能是可行的。这允许用户选择是否安装具有XDG完全支持的clojure cli,同时也允许包管理器(例如,考虑Debian Clojure包维护者)。类似于`--prefix`标志。

这是在提交中的一个想法:用代码更容易解释:[链接](https://github.com/jgomo3/brew-install/commit/bfae7f15291826c0a27e2a76d42a5275493c7da2)

一个重要的事情是,我们的意图不是更改当前的行为。

注意:代码未经过测试,它不是一个拉取请求。它只是为了支持这个评论。
by
在选择安装时做出选择是一个好主意。如果你有兴趣为它编写补丁,我会很高兴让你这样做。

编辑
是的,谢谢。我很乐意处理这个补丁。

我会按照以下说明操作: https://clojure.org/dev/dev
...