glibc升级引起locale警告

2017-11-06 12:04:24

在升级glibc后,发现每次登录都提示如下警告:

1
2
3
4
5
-bash: warning: setlocale: LC_CTYPE: cannot change locale (en_US.UTF-8): No such file or directory
-bash: warning: setlocale: LC_COLLATE: cannot change locale (en_US.UTF-8): No such file or directory
-bash: warning: setlocale: LC_MESSAGES: cannot change locale (en_US.UTF-8): No such file or directory
-bash: warning: setlocale: LC_NUMERIC: cannot change locale (en_US.UTF-8): No such file or directory
-bash: warning: setlocale: LC_TIME: cannot change locale (en_US.UTF-8): No such file or directory

让我们先回顾下升级glibc步骤
1、使用 strings /lib64/libc.so.6 |grep GLIBC查看目前系统的glibc版本
2、wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
3、glibc安装

1
2
3
4
5
6
7
[root@localhost ~]# tar xvf glibc-2.14.tar.gz
[root@localhost ~]# cd glibc-2.14
[root@localhost glibc-2.14]# mkdir build
[root@localhost glibc-2.14]# cd ./build
[root@localhost build]# ../configure --prefix=/usr/local/glibc-2.14
[root@localhost build]# make
[root@localhost build]# make install

4、创建glibc2.14的软链

1
ln -sf /usr/local/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6 ###特别说明,千万不要先删除之前的软链,直接加-f参数覆盖就行了,否则无法开机

5、设置语言相关的locale-archive文件

1
2
3
4
[root@localhost ~]# find / -name locale-archive   ###找出glibc2.12的语言相关的 locale-archive 文件
/usr/lib/locale/locale-archive
[root@localhost locale]# cp /usr/lib/locale/locale-archive /usr/local/glibc-2.14/lib/locale/ ###复制到编译好的glibc 2.14的lib/locale中,记得先创建locale目录
[root@localhost locale]# /usr/local/glibc-2.14/bin/localedef -i en_US -f UTF-8 en_US.UTF-8 ##运行生成相应的locale配置文件

在升级之后出现报警的原因是漏掉了步骤5

ref
升级glibc到glibc-2.14解决version `GLIBC_2.14’ not found 问题
GLIBC2.12升级GLIBC2.14源码


您的鼓励是我写作最大的动力

俗话说,投资效率是最好的投资。 如果您感觉我的文章质量不错,读后收获很大,预计能为您提高 10% 的工作效率,不妨小额捐助我一下,让我有动力继续写出更多好文章。