【发布时间】:2019-07-08 18:15:39
【问题描述】:
在 Go 程序中,我调用 time.LoadLocation("Europe/Berlin") 并返回错误消息 open /usr/local/go/lib/time/zoneinfo.zip: no such file or directory,即使在容器中(运行 alpine:3.9 并安装了 tzdata)/usr/share/zoneinfo/Europe/Berlin 存在,并且根据 docs,应该优先于 zip 文件。相同的程序在我的机器(Arch Linux)上找到该文件。可执行文件在我的机器上静态链接,然后复制到容器中。我试过 Go 1.11.5 和 1.10.3。
我构建了可执行文件:
CGO_ENABLED=0 go build -a -ldflags "-s" -o gocake_static
我正在寻找任何可以帮助我识别问题的想法。
【问题讨论】:
-
您在构建该可执行文件时是否指定了容器的操作系统和架构?你能分享你构建可执行文件的命令吗?
-
... 是容器上设置的
ZONEINFOenv 变量,如果是,它的值是多少? -
@mkopriva 不,我没有。不过,它应该是相同的架构,不是吗?我将构建命令添加到我的问题中。
-
@mkopriva 设置
ZONEINFO变量似乎没有什么不同。我尝试将其设置为/usr/share/zoneinfo。 -
是否安装了
tzdata包? (在官方的 Ubuntu 图像中它不是)。