Chef infra 启动chef客户端时,区域设置变量会更改 < >当我的服务器上运行一个厨师客户端时,由于位置变量,我在做一个C++二进制的服务重启时遇到了问题。

Chef infra 启动chef客户端时,区域设置变量会更改 < >当我的服务器上运行一个厨师客户端时,由于位置变量,我在做一个C++二进制的服务重启时遇到了问题。,chef-infra,locale,environment,Chef Infra,Locale,Environment,启动chef client之前,我有自己的区域设置: LANG=POSIX 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="PO

启动chef client之前,我有自己的区域设置:

LANG=POSIX
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=
问题在于,当启动chef客户端时,区域设置会发生更改,它会变成:

 LANG=C.UTF-8
LANGUAGE=C.UTF-8
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_PAPER="C.UTF-8"
LC_NAME="C.UTF-8"
LC_ADDRESS="C.UTF-8"
LC_TELEPHONE="C.UTF-8"
LC_MEASUREMENT="C.UTF-8"
LC_IDENTIFICATION="C.UTF-8"
LC_ALL=C.UTF-8
并在执行完成后返回POSIX

我怎样才能解决这个问题?客户从哪里获得默认的编码设置?二进制文件应该与POSIX一起运行(我可以通过在init脚本中导出LC_ALL=POSIX来解决这个问题,但我想知道根本问题)

注意:我在chef client 11上没有这个问题,我在更新到chef client 12后得到了它,相关代码仍然有效


基本上在Chef 12中,我们试图通过检测系统区域设置来修复由不正确设置引起的区域设置问题的长尾。这可能不适合您。您始终可以通过
环境
属性在execute resources上显式设置它。

请参阅和一个可能与您的问题相关的。如果没有关于您使用的操作系统、如何调用程序以及Chef版本的更多细节,就不可能给出更多建议。我使用的是ubuntu 12.04,Chef client的版本是12.4.1(Chef server paquet:12.0.0-1)。我运行的操作是典型的服务重启执行“restart toto service”do命令“sudo-i-u toto/toto/scripts/service restart”action:nothing end'`好的,谢谢,我会这样做,所以这和@Tensibai提到的问题是一样的。这就是为什么我和11号厨师没有这个问题