linux locale 编译,Linux locale 缺失和安装

遇到的问题:

1.-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf8)

Sovled:

locale-gen en_US.UTF-8

update-local en_US.UTF-8

2.en_US.UTF-8... cannot open locale definition file `translit_neutral': No such file or directory

failed

从别的机器复制文件

3.locale -a 出现:

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

POSIX

C

但是 /usr/lib/locales确实有数种字符集。

尝试了

(1) rm -rf /usr/lib/locale/*  (2) dpkg-reconfigure locales (3) locale-gen (4) update-local 等等都不行

最后从别的机器上copy了/usr/share/i18n目录覆盖本机的,执行(1)(3) 问题消失。还有一点:which locale 确定正在使用的locale程序是否是预期中的。

小结:

1.全新的字符库编码信息位于 /usr/share/i18n目录下面,其中SUPPORTED中包含可用的所用字符集,格式如下:

。。。

zh_HK BIG5-HKSCS

zh_SG.UTF-8 UTF-8

zh_SG.GBK GBK

zh_SG GB2312

zh_TW.EUC-TW EUC-TW

zh_TW.UTF-8 UTF-8

。。。。

其中的charmaps存的每种字符集的映射信息,可以称为最初文件(可能有术语,不管这么多啦)。使用localedef可以生成字符集,就是 locales里面那些东东。

但这些并不是系统中能用的字符集。刚才描述的这些/usr/share/i18n里面的文件只能算是可用的字符集,locale -m可以看到列表。

由于Linux中包含的字符集有几十种,而用户一般能用到的最多就是多种,没必要把所有字符集都集成到系统里。系统里面只使用部分字符集。另外为了让系统能使用,

原始的/usr/share/i18n中德文件要经过处理(complile),能用的字符编码在/usr/lib/locale/下面,成为complied字符集。

2。使用locale-gen可以把原始的/usr/share/i18n中的文件complie成系统能用的/usr/lib/locale/地字符集。locale-gen的参数是要使用的字符集列表,可在在终端下

制定。不然会自动在./var/lib/locales/supported.d/下寻找。编译产生的字符集可以两类方式存在: a.archive file: /usr/lib/locale/locale-archive b.分目录存储。详见man locale-gen

3. /usr/share/i18n里面的东西操作系统无关,不同体系结构不同系统可以通用,若有缺失,从其他地方复制来便可。

Error:locale-gen en_US.UTF-8:

en_US.UTF-8... cannot open locale definition file `translit_neutral': No such file or directory  failed

en_US.UTF-8... cannot open locale definition file `translit_combining': No such file or directory

-->: 从别的机器上复制/usr/share/i18n/locales/trans×到本地/usr/share/i18n/locales目录。

Useful Link:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值