CentOS 升級libc後導致中文亂碼 locale: Cannot set LC_CTYPE to default locale: No such file or directory
阿新 • • 發佈:2020-07-30
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
已經正常了 !