字符集報錯一直存在
locale: cannot set lc_ctype to default locale: no such file or directory
locale: cannot set lc_messages to default locaqbtezle: no such file or directory
locale: cannot set lc_all to default locale: no such file or directory
背景公司有台jenkins伺服器,因歷史原因一直使用centos6.5,突然登入時候提示字符集有問題,本人其實已經使用centos7很久,沒碰到過這樣問題,排查過程也一臉懵逼。
就是各種字符集報錯,設定無效,n天後經過不斷排查,發現為glibc導致,拍錯過程還發現不能使用2.15版本,我擦,趕緊記一下。
排錯過程
1.直接反應為字符集,百度查了多個文件,各種配置,各種更新外掛程式,就是不生效,再趕上手頭還有其他工作,也耽誤了幾天。
今天仔細想了一下,既然任何字符集都不生效,應該不是字符集問題,肯定載入過程出問題了,但是這幾天伺服器沒做啥工作啊,無聊翻了下百度,突然看到了glibc的相關帖子,然後繼續百度搜了一下,還真有別的哥們碰到過類似的,說編譯時候要加make localedwww.cppcns.comata/install-locales,了解辦法後趕緊嘗試。
2.系統預設是2.12,我因為有的外掛程式需求,我公升級到了2.14。我本想降到2.12,但是又一想,不如**個2.15,重新編譯,理論應該就都解決了。
3.網上找glibc-2.15資源,**,編譯,安裝,常規操作後,將/lib64/libc.so.6軟鏈結指向glibc-2.15,然後就又報錯了 illegal instruction (core dumped),系統也無法登陸了,趕緊修復 ld_preload=/lib64/libc-2.12.so ln -sf /lib64/libc-2.12.so /lib64/libc.so.6 先降會2.12,起碼字符集故障解決了,但是這樣不行啊,經過多次嘗試公升級2.15,最終還是失敗了,網上也沒找到相關解決辦法。
4.無奈,想是不是和系統相容問題,不放棄,又嘗試公升級2.17,依然常規操作,這次終於可以了。。。
具體過程
1.檢視系統glibc版本庫
strings /lib64/libc.so.6 |grep glibc_
發現最高到2.12,準備公升級到2.17,一定不要裝2.15程式設計客棧,我不程式設計客棧知道是不是我自己有問題,反正我裝不上
2.**安裝
進入**目錄/data/install,執行命令,具體不解釋了,都懂
wget
tar xvf glibc-2.17.tar.gz
mkdir glibc-build-2.17
cd glibc-build-2.17/
../glibc-2.17/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make -j8 && make install && make localedata/install-locales
3.驗證
strings /lib64/libc.so.6 | grep glibc
都不用替換/lib64/libc.so.6檔案,而且檔案軟鏈結已指向glibc-2.17,完事了。
修改linux字符集
1 說明 windows的預設編碼為gbk,linux 的預設編碼為utf 8。在windows下編輯的中文,在linux下顯示為亂碼。為了解決此問題,修改linux的預設編碼為gbk。2 檢視支援的字符集 3 安裝英文版預設的字符集配置為 cat etc sysconfig i18n lang e...
Linux 字符集轉化
命令列 iconv list 檢視linux作業系統支援的字符集 iconv open 設定字符集轉化 iconv t iconv open const char tocode,const char fromcode 引數tocode目標字符集的字串 引數fromcode源字符集的字串 函式成功返回...
linux修改字符集
linux windows的預設編碼為gbk,linux的預設編碼為utf 8。在windows下編輯的中文,在linux下顯示為亂碼。為了解決此問題,修改linux的預設編碼為gbk 2 檢視支援的字符集 locale a 3 安裝英文版預設的字符集配置為 cat etc sysconfig i1...