使用ssh远程登录到IDC房间服务器时,您总是会看到类似以下内容的警告消息:
- bash : warning : setlocale : LC _ ctype : cannotchangelocale (en _ us.utf-8 ) : no such文件或目录
- bash : warning : setlocale : LC _ collate : cannotchangelocale (en _ us.utf-8 ) :否such文件或目录
- bash : warning : setlocale : LC _ messages : cannotchangelocale (en _ us.utf-8 ) :否such文件或目录
- bash : warning : setlocale : LC _ numeric : cannotchangelocale (en _ us.utf-8 ) :否such file or directory
- bash : warning : setlocale : LC _ time : cannotchangelocale (en _ us.utf-8 ) : no such文件或目录
原因分析:
根据上面的登录警告消息,缺省区域_语言.字符集设置为en_US.UTF-8,但系统中没有定义相应的locale文件。
所以手动生成这个locale文件就可以了!
解决方案:
[ root @ centos6- vm01~] # vim/etc/environment #添加以下两行
LANG='en_US.UTF-8 '
LC_ALL=
[ root @ centos6- vm01~] # source/etc/environment
[ root @ centos6- vm01~] # vim/etc/sys config/i18n
LANG='en_US.UTF-8 '
SYSFONT='latarcyrheb-sun16 '
[ root @ centos6- vm01~] # cat/etc/sys config/i18n
然后运行以下命令以生成字符集en_US.UTF-8的locale文件
[ root @ centos6- vm01~] # localedef-v-c-ien _ us-futf-8en _ us.utf-8
以上操作后,如果再次登录ssh,则不再显示此警告消息。
如果发生,- bash : warning : setlocale : LC _ all : cannotchangelocale (zh _ cn.utf-8 ) ) ) ) ) ) ) )。
解决方案
[ root @ localhost~] # vim/etc/sys config/i18n
LANG='zh_CN.UTF-8 '
LC_ALL='zh_CN.UTF-8 '
SYSFONT='latarcyrheb-sun16 '
第一行解决了中文乱码的问题
第二行解决了LC _ all : cannotchangelocale (zh _ cn.utf-8 )的问题。
[ root @ localhost~] # source/etc/sys config/i18n
然后安装:
[ root @ localhost~] # yuminstallglibc-common kde-l10n-Chinese
安装后,重新启动服务器将消除上述问题。
注意:服务器的配置方法因类型而异。 要解决问题,需要根据实际机器的情况,尝试几种方法。
系统中的glibc和locale的库版本也可能不兼容。
解决方案:请删除并重建locale库。 前提是文件系统中有适当的数据文件。
[ root @ localhost~] # RM-f/usr/lib/locale/locale-archive
[ root @ localhost~] # localedef-ien _ us-fiso-8859-1-a/usr/share/locale.aliasen _ us
[ root @ localhost~] # localedef-izh _ cn-fgb 2312-a/usr/share/locale/locale.alias zh _ cn
[ root @ localhost~] # yum-yreinstallglibc-common
在centos7系统上使用/tydyj/sh或su命令显示警告: warning : setlocale 3360 LC _ all 3360 cannotchangelocale (zh _ cn.utf-8 )
[ root @ uatblockchain 04~~ ] # locale
locale : cannotsetlc _ ctypetodefaultlocale : nosuchfileordirectory
locale : cannotsetlc _ messagestodefaultlocale : nosuchfileordirectory
locale : cannotsetlc _ alltodefaultlocale : nosuchfileordirectory
在物理机上,只要运行:
[ root @ localhost~] # yum-yinstallkde-l10n-Chinese telnet
[ root @ localhost~] # yum-yreinstallglibc-common
需要修改:
[ root @ localhost~] # vim/etc/locale.conf
LC_ALL='zh_CN.UTF-8 '
[ root @ localhost~] # source/etc/locale.conf
请注意,如果在Dockerfile中运行,则差异不大:
要确保没有错误,需要执行三个步骤
yum-yinstallkde-l10n-Chinese telnet
yum -y reinstall glibc-common
yum clean all
localedef-c-futf-8-izh _ cnzh _ cn.utf 83
或者除此之外
cat/dev/null/etc/locale.conf echo ' LC _ all=' zh _ cn.utf-8'/etc/locale.conf
这样可以保证中文没有问题。
其中之一是在基础镜像的重新安装软件时再次遇到了这个异常的提示
最后一种解决方案是在dockerfile生成进程发出警告后再试一次
localedef-c-futf-8-izh _ cnzh _ cn.utf8