Debian Linux学习笔记之修正locale
遇到问题了!
debian下安装default-jdk的时候,提示说
apt-listchanges: Can't set locale; make sure $LC_* and $LANG are correct!
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_US:zh",
LC_ALL = (unset),
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
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_ALL to default locale: No such file or directory
上面是方便搜索引擎的,下面是错误截图:
咋办?肝!
肝之前先分析下:
这个错误就是要修改下locale设置项目,locale,按照这个词的意思来说,可能跟本地信息有关,也就是想办法改个设置
想办法,嗯!听说linux社区资源丰富!
肝!
2. 问题解决
>思路
问题的本身就是locale这个东西设置的语言与perl要求的对不上号! 查阅了Debian的官方文档,确实存在很多软件对非en_US:UTF-8 UTF-8的支持很不友好的事儿!所以,解决方案就要围绕这个点出发!找到负责locale配置的文件,修改他!
不过在实际的资料查阅中发现,这需要两个步骤,一是修改配置文件,二是应用配置
>开工
一、修改配置文件
在命令行输入sudo vim /etc/locales.gen
命令,打开对应的配置文件
NOTE: 笔者使用的是vim文本编辑器,初次使用比较麻烦,建议读者先改用自己熟悉的编译器把问题解决了
打开以后,文件张下面这个样子:
其中,#表示注释!因为系统原来是有配置的,所以我们要先去找到那条不带#的,并在前面加上#给注释掉(笔者的是zh_CN.UTF-8 UTF-8):
然后我们需要找到# en_US:UTF-8 UTF-8那行,#号和他后面的空格符号一并删掉:
然后保存文档,关闭文件。
二、应用更改
应用的方式很简单,就是让系统根据刚刚改好的文件,重新生成locale.笔者用的是sudo locale-gen
命令完成的,如下:
user@PC_Name:~/Desktop$ sudo locale-gen
Generating locales (this might take a while)...
en_US.UTF-8... done
Generation complete.
至此,该问题解决!
当然,除了local-gen命令外,dpkg里面也有个相关的指令,不过操作比较复杂,这里不展开讲解。
后记 - 那些验证失败的方案
这里就是说个事儿:Linux,真不好整!且行且珍惜吧
>方案一:sudo dpkg-reconfigure locales
这个指令会启动一个设置locales的界面(如下),通过方向键进行选择,一直下翻能够找到一个en_US:UTF-8 UTF-8的选项。那会儿我以为我找到了解决方案,谁知…
好吧,回车键确认,体验与我类似的经历吧
回车键确认后张下面这个样子,压根就没有我要的东西!诶…
回车键确认后,bash里的提示是这个样子的:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_US:zh",
LC_ALL = (unset),
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
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_ALL to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_CTYPE to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_MESSAGES to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_ALL to default locale: No such file or directory
Generating locales (this might take a while)...
zh_CN.UTF-8... done
Generation complete.
倒数第二行,zh_CN.UTF-8
额,其实这句话就是在告诉我们:你,失败了!
好吧,继续浪!(不要问我这个指令敲了多少遍了,记不住!完全记不住)
>方案二: locale-gen命令
这个命令吧,如果直接敲的话,踏实这样的:
user@PC_Name:~/Downloads$ locale-gen
bash: locale-gen: command not found
对,not found ~
命令没找到,这是什么鬼啊…
然后我以为,-gen和locale之间应该有个空格吧…
于是乎…
user@PC_Name:~/Downloads$ locale -gen
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: invalid option -- 'g'
Try `locale --help' or `locale --usage' for more information.
其他的尝试我就不唠叨了
反正结果就是,
我不想折腾了,真的!
合上电脑睡觉!
诶,等等,会不会是因为权限不够啊?上sudo再试试!(下面的指令-gen前面有空格)
user@PC_Name:sudo locales -gen
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: invalid option -- 'g'
Try `locale --help' or `locale --usage' for more information.
Cannot
还不止出现一边
Linux,不给人活路啊!
真的不想查资料了,全英文的,看着太费劲了!
好吧,试都试了,那就把 locales-gen也试试吧!
来,大家欣赏下仿佛成功了,又没有成功的喜悦与悲伤:
user@PC_Name:~/Desktop$ sudo locale-gen
Generating locales (this might take a while)...
zh_CN.UTF-8... done
Generation complete.
确实是做了点啥
但感觉好像是啥也没做
毕竟,zh_CN在那儿摆着呢
好吧,在安装一次jdk试试,贴图就不上了,泪太多。
但是记住上面这个指令,他是解决问题的重要工具!
>杂七杂八的方案
a. 修改/etc/locale.gen
对,参考文档只给这么一句话,改什么?怎么改?
不过好歹打开看看这个文件,对吧!
上面一大段的文字说明就不说了,下面这些是啥?不久是刚才那个dpkg啥啥的里面那些个可选项吗?改啥?咋改?不过先找找看看有没有en_US啥啥的吧!别说,还真有!还不止一个!
所以改啥?咋改,我真的一头雾水!
b. grep查看信息
这个是在一个英文站点看到的,原文好像是查看en_de啥的,不管了,贴上命令和执行效果,大家自己看吧(有没有用先不说,至少学到了一个linux的指令,别忘了,我是Linux新人)
user@PC_Name:~/Downloads$ grep en_US /etc/locale.gen
# en_US ISO-8859-1
# en_US.ISO-8859-15 ISO-8859-15
# en_US.UTF-8 UTF-8
没啥用,但距离理解grep指令又近了一小步
其他还有诸如locales -a,vim /etc/default/locale啥啥的(最后这个文件我动了,还没恢复呢)
反正没有一个好使的!
3. 折腾Linux就是,一个问题接着一个问题
开头说了,我遇到这个问题是因为jdk,那完事儿了自然还得继续安装jdk啊!那成想,我还是太年轻了!
放弃还是继续肝,这是个问题!