启动 chef-client 时区域设置变量发生变化

Locale variables change when launching chef-client

当 运行在我的服务器上安装 chef-client 时,由于语言环境变量,我在重新启动 c++ 二进制文件时遇到问题。

在启动 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-client 启动时语言环境发生了变化,变成了:

 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

和returns到POSIX当执行完成时。

我该如何解决这个问题?厨师客户从哪里获得他的默认编码设置?二进制文件应该 运行 和 POSIX (我可以通过在初始化脚本中导出 LC_ALL=POSIX 来解决这个问题,但我想知道根本问题)

注意:我在 chef-client 11 上没有这个问题,我在更新到 chef-client 12 后就明白了

相关代码存在here

基本上在 Chef 12 中,我们尝试通过检测系统区域设置来修复由于设置不当而导致的区域设置问题。这可能不适合您。您始终可以通过 environment 属性.

在执行资源上明确设置它