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 已经正常了 !

posted @ 2020-07-30 13:31  jasondayee  阅读(2034)  评论(0编辑  收藏  举报