Debian学习笔记: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啊!那成想,我还是太年轻了!
在这里插入图片描述
放弃还是继续肝,这是个问题!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值