CentOS 升级libc后导致中文乱码 locale: Cannot set LC_CTYPE to default locale: No such file or directory
CentOS 升级libc后导致中文乱码
CentOS 6.5 默认libc最高版本支持为GLIBC_2.12
查看方法:
strings /lib64/libc.so.6 |grep GLIBC_
由于一些软件编译需要高版本的libc,不想升级系统版本,只好单独升级libc版本(尽量不要在线上机器直接升级,除非你很有信心一次就可以编译并且升级成功)
具体升级方法在网上可以找到很多,这里推荐一个:
升级方法
升级完成后查看带中文文件的目录 ls
会发现中文字全部变成 ???
执行 locale
命令:
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_COLLATE to default locale: No such file or directory
如果这时你没有删除glibc的编译目录,则进入glibc的编译目录,也就是build目录
make localedata/install-locales
再次执行 locale
这时应该已经正常了
但是如果你已经删除了编译glibc的build目录或者不知道build的目录在哪里
按照以下步骤:
- 查看 libc.so.6 软连接指向
ls -la /lib64/libc.so.6
/lib64/libc.so.6 -> libc-2.14.so
- 查看 locale-archive 归档文件目录
strings libc-2.14.so | grep locale-archive
/usr/local/glibc-2.14/lib/locale/locale-archive
这个目录是在升级libc的时候build的目录
- 添加软链接
ls -la /usr/local/glibc-2.14/lib/locale/locale-archive
发现文件并不存在
那么
ln -s /usr/lib/locale/locale-archive /usr/local/glibc-2.14/lib/locale/locale-archive
重新执行 locale
已经正常了 !