Linux · 4 1 月, 2025 0

解决RHEL系包管理警告:Failed to set locale, defaulting to C.UTF-8

症状

在CentOS、RockyLinux等RHEL系Linux系统中使用yumdnf命令进行包管理时,出现以下提示:

Failed to set locale, defaulting to C.UTF-8

软件包的安装升级等操作可以正常进行。

原因及解决

该问题是系统无法调用“en_US.UTF8”语言包导致的。用locale -a命令查看系统已安装的语言包。如果没有“en_US.UTF8”则需要额外安装。(语言包缺失有可能因为安装系统时语言选择了中文导致的。笔者的列表中有一串“zh_”开头的语言包)

用以下命令安装需要的语言包(这里以dnf安装为例):

dnf install glibc-langpack-en

安装完成后再次用locale -a查看列表,“en_US.UTF8”出现在了列表中,包管理时的提示也不会再出现了。

后话

该语言包缺失一般影响不大,但偶尔会出现意想不到的问题,比如新版的ansible会无法运行,出现内容为“ERROR: Ansible requires the locale encoding to be UTF-8”的错误提示。

至于网上常见的方法:

echo "export LC_ALL=en_US.UTF-8" >> /etc/profile
source /etc/profile

生效的前提是语言包本身存在。因此还是得先安装了语言包才行。笔者亲测,语言包安装完毕后并不需要执行此命令。