Go版本
go版本 go1.23.0 linux/amd64
在你的模块/工作区中的go env
的输出:
GO111MODULE=''
GOARCH='amd64'
GOBIN=''
GOCACHE='/home/andrew/.cache/go-build'
GOENV='/home/andrew/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS='-modcacherw'
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE=''
GOMODCACHE='/home/andrew/.go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='linux'
GOPATH='/home/andrew/.go'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/opt/golang/go1.23.0'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/opt/golang/go1.23.0/pkg/tool/linux_amd64'
GOVCS=''
GOVERSION='go1.23.0'
GODEBUG=''
GOTELEMETRY='off'
GOTELEMETRYDIR='/home/andrew/.config/go/telemetry'
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='gcc'
CXX='g++'
CGO_ENABLED='0'
GOMOD='/dev/null'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -m64 -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build2289507740=/tmp/go-build -gno-record-gcc-switches'
你做了什么?
- 升级到Go 1.23.0
- 使用Go几天
你看到了什么发生?
我的 $XDG_CONFIG_HOME/go/telemetry
目录( $HOME/.config/go/telemetry
)现在充满了数据文件,违反了 XDG Base Directory Specification ,该配置保留了 $XDG_CONFIG_HOME
。
你期望看到什么?
我期望遥测数据存储在 $XDG_STATE_HOME
中。
5条答案
按热度按时间wlzqhblo1#
相关问题和文档
(如果觉得有帮助或无帮助,请给表情投票;欢迎在 this discussion 提供更详细的反馈。)
aiqt4smr2#
CC @golang/telemetry
nnvyjq4y3#
谢谢。我的理解是,
os.UserConfigDir
之所以被选择,是因为它的便携性以及将所有遥测数据集中到一个地方。然而,我们可能可以在POSIX系统上使用更合适的目录。顺便说一下,选择
$XDG_STATE_HOME
而不是$XDG_DATA_HOME
的原因是,后者的数据不可移植,并且与特定的应用程序状态有关。如果是这样的话,那么$XDG_STATE_HOME
可能最适合用于计数器文件和日志,而$XDG_DATA_HOME
则最适合用于整合每周的JSON摘要(本地或上传的报告)。u0njafvf4#
$XDG_STATE_HOME
用于应用程序状态,而$XDG_DATA_HOME
用于诸如字体或图标文件(在/usr/share
中找到的那种东西)之类的事物,尽管许多应用程序将其状态放在那里,因为$XDG_STATE_HOME
并不总是存在。因此,所有遥测数据,包括每周的 JSON 摘要,都属于$XDG_STATE_HOME
。有关背景信息,请参阅 https://lists.freedesktop.org/archives/xdg/2016-December/013803.html 、 https://wiki.debian.org/XDGBaseDirectorySpecification 和 https://www.reddit.com/r/linux/comments/ny34vs/new_xdg_state_home_in_xdg_base_directory_spec/ 。
8nuwlpux5#
我们会议讨论这个问题的注意事项:
go env GOTELEMETRYDIR
也是如此。os.UserConfigDir
作为数据存储位置的定义是一个优势。具有更复杂启发式的复杂性可能会损害我们文档的清晰度。mode
或weekends
文件)与有状态的数据(计数器和报告)分开。实际上,将状态放在一个单独的目录中可能会更干净,这样clean
操作就变得简单了。所以,我目前的感受是,虽然XDG_STATE_HOME可能是Linux上更合适的目录,但现在做出这个改变的好处是否抵消了缺点还不清楚。如果有类似
os.UserStateDir
的东西,那么缺点就会大大减少,但是如果Windows(甚至Mac?)上没有好的对应物,这样的API是否有意义呢?