glibc升级字符集乱码问题

对glibc-2.12升级到glibc-2.14
查看版本
getconf GNU_LIBC_VERSION
显示glibc 2.12
下载glibc-2.14.tar.gz
创建glibc目录,将文件移动进去,进入目录
解压tar -xvf glibc-2.14.tar.gz
mkdir build
cd build
开始安装
…/configure --prefix=/opt/glibc-2.14
make
make install
安装成功后会
getconf GNU_LIBC_VERSION
再次查看会显示 glibc-2.14
rm /lib64/libc.so.6
新建软连接
ln -s /opt/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6
LD_PRELOAD=/opt/glibc-2.14/lib/libc-2.14.so ln -s /opt/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6

退出后ssh登录 会弹出
-bash: warning: setlocale: LC_CTYPE: cannot change locale (zh_CN.UTF-8): No such file or directory
-bash: warning: setlocale: LC_COLLATE: cannot change locale (zh_CN.UTF-8): No such file or directory
-bash: warning: setlocale: LC_MESSAGES: cannot change locale (zh_CN.UTF-8): No such file or directory
-bash: warning: setlocale: LC_NUMERIC: cannot change locale (zh_CN.UTF-8): No such file or directory
-bash: warning: setlocale: LC_TIME: cannot change locale (zh_CN.UTF-8): No such file or directory

问题排查 strace localedef
open(“/opt/glibc-2.14/share/locale/zh_CN.UTF-8/LC_MESSAGES/libc.mo”, O_RDONLY) = -1 ENOENT (No such file or directory)
open(“/opt/glibc-2.14/share/locale/zh_CN.utf8/LC_MESSAGES/libc.mo”, O_RDONLY) = -1 ENOENT (No such file or directory)
open(“/opt/glibc-2.14/share/locale/zh_CN/LC_MESSAGES/libc.mo”, O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=81086, …}) = 0

cp /usr/lib/locale/locale-archive /opt/glibc-2.14/share/locale/locale-archive

输入strings /opt/glibc-2.14/bin/locale|grep locale

setlocale
/locale.
locale (GNU %s) %s
/opt/glibc-2.14/lib/locale
/opt/glibc-2.14/share/locale
all-locales
/opt/glibc-2.14/lib/locale/locale-archive
locale: %-15.15s archive: /opt/glibc-2.14/lib/locale/locale-archive
locale: %-15.15s directory: %.*s
Cannot set LC_CTYPE to default locale
Cannot set LC_MESSAGES to default locale
Cannot set LC_COLLATE to default locale
Cannot set LC_ALL to default locale
Write names of available locales
Get locale-specific information.

问题解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值