为什么我在Dockerfile中使用这个更改我的语言环境... :
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
...以便我可以通过此方式更改语言环境...
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
..对此..
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
然后我遇到问题,例如没有执行命令的问题:
root@820760edeb77:/# irb
bash: irb: command not found
但是,如果我将这些更改带到语言环境中,并在重建容器之后保留它们,那么一切都按预期工作??:
# ENV LANG en_US.UTF-8
# ENV LANGUAGE en_US:en
# ENV LC_ALL en_US.UTF-8
root@820760edeb77:/# irb
2.3.1 :001 >
我不太确定会导致此问题的原因,更改的语言环境会禁止命令工作,但怀疑这可能只是Docker容器中Locale更改的副作用,并且可能不是真正的问题吗?
答案 0 :(得分:0)
所以我刚想通了,结果我使用了错误的Docker语言环境类型,这与此问题有关here。
一个小而重要的区别C
与en_US
:
<强> WRONG
强>
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
<强> RIGHT
强>
ENV LANG C.UTF-8
ENV LANGUAGE C.UTF-8
ENV LC_ALL C.UTF-8
有谁可以告诉我为什么Docker使用C
作为区域设置,vs en_US
或其他?
现在Ruby / irb
已成功运作(虽然我的生命中有4个小时丢失了..... )