欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

CentOS6.5安裝glibc-2.14后locale出現(xiàn)No?such?file?or?directory解決辦法

 更新時(shí)間:2021年11月26日 17:18:48   作者:重慶春哥  
大家好,本篇文章主要講了CentOS6.5安裝glibc-2.14后locale出現(xiàn)No?such?file?or?directory解決辦法,感興趣的同學(xué)趕快來(lái)看看吧,希望對(duì)你有幫助

?一、掉進(jìn)坑里

最近公司內(nèi)部的一臺(tái)測(cè)試服務(wù)器(CentOS6.5),因?yàn)榘惭b某軟件需要升級(jí)glibc庫(kù),glibc是linux的一個(gè)核心庫(kù),如果直接替換升級(jí)原有版本,可能出現(xiàn)無(wú)法預(yù)料的異常(比如大面積出現(xiàn)命令不能運(yùn)行)。
于是手動(dòng)升級(jí)安裝了glibc-2.14,參考分享Centos6.5升級(jí)glibc過(guò)程
去官網(wǎng)下了個(gè)glibc-2.14的tar包,按照上面的步驟編譯安裝:

$ mkdir build  // 在glibc-2.14目錄下建立build文件夾
$ cd build     // 進(jìn)入build目錄
$ ../configure --prefix=/opt/glibc-2.14 // 注意:配置glibc并設(shè)置當(dāng)前glibc-2.14安裝目錄
$ make && make install     // 編譯安裝glibc-2.14庫(kù)

修改了/lib64/libc.so.6的軟連接指向,程序可以正常運(yùn)行,但中文出現(xiàn)了亂碼問(wèn)題

于是呼,按照自己的經(jīng)驗(yàn)和網(wǎng)上大多數(shù)N人的說(shuō)法,認(rèn)為這個(gè)簡(jiǎn)單,重新設(shè)置一下語(yǔ)言不就搞定了嗎?

說(shuō)干就干,在Shell中運(yùn)行l(wèi)ocale,出現(xiàn)如下錯(cuò)誤:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

_注:以上錯(cuò)誤不僅出現(xiàn)在手動(dòng)運(yùn)行l(wèi)ocale命令時(shí),而且每次ssh遠(yuǎn)程登錄進(jìn)shell時(shí)都會(huì)出現(xiàn)。_

二、掙扎無(wú)果

為解決以上問(wèn)題,大量度娘和G狗,嘗試過(guò)以下方法,問(wèn)題依舊。

使用如下命令:
export LANG="en_US.utf8"
可以修改環(huán)境變量LANG,修改之后立即生效,當(dāng)時(shí)當(dāng)系統(tǒng)重新啟動(dòng)時(shí)便會(huì)又變成原來(lái)的語(yǔ)言
另外兩種修改語(yǔ)言的方法:
1.配置如下文件:
vi /etc/sysconfig/i18n
將原來(lái)的配置如:
LANG="zh_CN.utf8"
修改為
LANG="en_US.utf8"
保存之后不會(huì)立即生效,而是要重啟之后生效。

三、青春的沖動(dòng)

焦頭爛額之時(shí),出去smoking了一下,看來(lái)還是要回到問(wèn)題的本質(zhì),既然出現(xiàn)了 No such file or directory錯(cuò)誤,說(shuō)明應(yīng)該是我們配置了某種不存在或者系統(tǒng)不支持的locale,比如上面解決辦法中的通過(guò)個(gè)修改語(yǔ)言LANG=”en_US.UTF-8”,將locale設(shè)置成了zh_CN.UTF-8,而操作系統(tǒng)在通過(guò)配置去初始化本地化環(huán)境的時(shí)候,沒(méi)有找到相應(yīng)的語(yǔ)言包(其實(shí)不只是語(yǔ)言包,locale還包括時(shí)區(qū)、貨幣度量等), 即OS找不到對(duì)應(yīng)的locale文件,想明白這個(gè)問(wèn)題就好辦了。

先使用locale命令看看系統(tǒng)中有沒(méi)有這個(gè)locale

[****@****** bin]# locale -a|grep en_US
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8

一看傻眼了,里面有en_US.utf8,也就是說(shuō)OS是支持將locale配置成en_US.utf8的,那為什么還是出現(xiàn)如下錯(cuò)誤:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

四、柳暗花明

是不是忽略了什么,再次回到原點(diǎn)審視。突然,想到了一個(gè)問(wèn)題:我們重新安裝了一個(gè)新的glibc庫(kù),而不是覆蓋升級(jí),也就是說(shuō)系統(tǒng)中目前至少有兩個(gè)locale命令,CentOS如何知道用哪個(gè)?

會(huì)不會(huì)是用了我們新裝的/opt/glibc-2.14/bin/locale,而不是系統(tǒng)默認(rèn)的/usr/bin/locale,用下面的命令很容易驗(yàn)證這個(gè)想法:

[****@****** bin]# /opt/glibc-2.14/bin/locale -a 
C
POSIX

果然,這個(gè)locale只支持C和POSIX,而沒(méi)有en_US.utf8,所以如果我們將locale配置成en_US.utf8,自然會(huì)報(bào)No such file or directory錯(cuò)誤。

問(wèn)題又來(lái)了,/opt/glibc-2.14/bin/locale命令所列舉的本地化locale語(yǔ)言包,是從哪里來(lái)的?是通過(guò)配置文件?還是直接讀取某個(gè)目錄里面的文件?
當(dāng)然如果去看源代碼很容易找到上面問(wèn)題的答案,因?yàn)榘潮容^懶,便大膽猜測(cè):應(yīng)該是從某個(gè)目錄里面讀取的,這個(gè)目錄里面應(yīng)該有系統(tǒng)所支持的所有的locale文件。這樣猜測(cè)是源于錯(cuò)誤消息是“沒(méi)有這樣的文件或目錄”。

為了找到這個(gè)目錄的位置,想到了strings命令,直接使用如下命令:

[****@****** bin]# 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.

果然上面出現(xiàn)了一個(gè)路徑/opt/glibc-2.14/lib/locale/locale-archive,通過(guò)名字很容易猜出這個(gè)很可能就是locale命令去讀取所有被支持的locale目錄(/或歸檔文件)位置。

五、問(wèn)題KO

ls一下上面那個(gè)目錄,的確里面是空的,沒(méi)有l(wèi)ocale-archive這個(gè)歸檔文件。

[****@****** bin]# ll /opt/glibc-2.14/lib/locale/

現(xiàn)在解決辦法就很簡(jiǎn)單了,直接將/usr/bin/locale這個(gè)locale命令使用的locale-archive文件copy到/opt/glibc-2.14/lib/locale/locale-archive即可

[****@****** bin]# cp /usr/lib/locale/locale-archive /opt/glibc-2.14/lib/locale/locale-archive

可能有小伙伴會(huì)問(wèn)了,你怎么知道/usr/bin/locale使用的locale文件目錄是/usr/lib/locale/locale-archive,答案很簡(jiǎn)單:度娘一把,很容易查到。

copy完成后,exit會(huì)話,重新登錄進(jìn)來(lái),再運(yùn)行/opt/glibc-2.14/bin/locale命令,未出現(xiàn)No such file or directory錯(cuò)誤了,而且之前的亂碼問(wèn)題也解決了。

六、后記

上面記錄一次了筆者自己解決centos 6.5環(huán)境下手動(dòng)安裝glibc庫(kù)后出現(xiàn)的亂碼問(wèn)題,過(guò)程中涉及到一些關(guān)于locale的原理知識(shí),也順便了解了一下。
By the way,上面猜測(cè)的/opt/glibc-2.14/bin/locale命令locale讀取路徑,后來(lái)也的確看一下locale.c源碼,證實(shí)的確是從/opt/glibc-2.14/lib/locale/locale-archive讀取的(當(dāng)然還有其他的讀取位置)。

到此這篇關(guān)于CentOS6.5安裝glibc-2.14后locale出現(xiàn)No such file or directory解決辦法的文章就介紹到這了,更多相關(guān)安裝glibc出現(xiàn)中文亂碼解決辦法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Linux 新的API signalfd、timerfd、eventfd使用說(shuō)明

    Linux 新的API signalfd、timerfd、eventfd使用說(shuō)明

    這篇文章主要介紹了Linux 新的API signalfd、timerfd、eventfd使用說(shuō)明的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-10-10
  • 詳解linux后臺(tái)運(yùn)行和關(guān)閉、查看后臺(tái)任務(wù)

    詳解linux后臺(tái)運(yùn)行和關(guān)閉、查看后臺(tái)任務(wù)

    本篇主要介紹了inux后臺(tái)運(yùn)行和關(guān)閉、查看后臺(tái)任務(wù),詳細(xì)的介紹了fg、bg、jobs、&、nohup、ctrl+z、ctrl+c 命令這些命令,有興趣的可以了解一下。
    2016-12-12
  • linux下通過(guò)Squid反向代理搭建CDN緩存服務(wù)器的配置方法

    linux下通過(guò)Squid反向代理搭建CDN緩存服務(wù)器的配置方法

    在移動(dòng)機(jī)房放置一臺(tái)CDN代理服務(wù)器,通過(guò)智能DNS解析,讓電信用戶直接訪問(wèn)Web服務(wù)器、讓移動(dòng)用戶訪問(wèn)CDN代理服務(wù)器,解決移動(dòng)用戶訪問(wèn)Web服務(wù)器慢的問(wèn)題
    2013-06-06
  • 讓Apache支持Rewrite靜態(tài)頁(yè)面重寫(xiě)的方法

    讓Apache支持Rewrite靜態(tài)頁(yè)面重寫(xiě)的方法

    Apache下Rewrite靜態(tài)頁(yè)面重寫(xiě)的方法,需要的朋友可以參考下。
    2010-07-07
  • Linux下如何永久修改主機(jī)名的方法步驟

    Linux下如何永久修改主機(jī)名的方法步驟

    這篇文章主要介紹了Linux下如何永久修改主機(jī)名的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • linux下的守護(hù)進(jìn)程

    linux下的守護(hù)進(jìn)程

    守護(hù)進(jìn)程(Daemon)是運(yùn)行在后臺(tái)的一種特殊進(jìn)程。它獨(dú)立于控制終端并且周期性地執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。守護(hù)進(jìn)程是一種很有用的進(jìn)程。Linux的大多數(shù)服務(wù)器就是用守護(hù)進(jìn)程實(shí)現(xiàn)的。同時(shí),守護(hù)進(jìn)程完成許多系統(tǒng)任務(wù)。
    2014-11-11
  • linux 磁盤(pán)轉(zhuǎn)移空間的方法

    linux 磁盤(pán)轉(zhuǎn)移空間的方法

    本篇文章主要介紹了linux 磁盤(pán)轉(zhuǎn)移空間的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Ubuntu服務(wù)器常用命令匯總

    Ubuntu服務(wù)器常用命令匯總

    ubunt常用服務(wù)器命令操作,閑來(lái)無(wú)事,分享ubuntu服務(wù)器版常用命令,絕對(duì)有用。希望大家好好享受,但是不要拿自己的服務(wù)器做測(cè)試,建議您在windows下建立虛擬機(jī)再操作
    2020-10-10
  • Linux下用dnsmasq做dns cache server的配置方法

    Linux下用dnsmasq做dns cache server的配置方法

    最近國(guó)外的服務(wù)器本地DNS總是出故障,閃斷一會(huì)兒都會(huì)影響業(yè)務(wù)。于是在機(jī)房里找了兩臺(tái)Server,安裝上keepalived和dnsmasq實(shí)際本地的DNS緩存
    2014-08-08
  • Linux環(huán)境下查看日志文件命令詳解

    Linux環(huán)境下查看日志文件命令詳解

    大家好,本篇文章主要講的是Linux環(huán)境下查看日志文件命令詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12

最新評(píng)論