首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Arch Linux:未能设置区域设置。修复您的系统

Arch Linux:未能设置区域设置。修复您的系统
EN

Unix & Linux用户
提问于 2018-01-19 02:40:37
回答 2查看 29.9K关注 0票数 8

昨天更新了我的Arch Linux系统之后,我开始收到一个类似于以下内容的错误:

代码语言:javascript
运行
复制
Failed to set locale. Fix your system.

此特定错误来自试图运行管理器。然而,下面是另一个相关的错误:

代码语言:javascript
运行
复制
bsdcpio: Failed to set default locale

perl给出了类似的警告,我将粘贴在下面。

它并不局限于任何特定的应用程序,它似乎是一个全系统的问题。

在昨天的更新之前,我没有收到这些错误。此外,我不会在虚拟控制台中获得错误。我只在X (KDE)内部得到它们。例如,如果我在konsole中运行一个管理器ls命令,就会得到上面的错误,但如果在虚拟控制台中运行相同的管理程序命令,则不会出现任何错误。

我的其他拱形系统,几乎是相同的,没有这个问题。

我第一次尝试故障排除如下。

  1. 检查/etc/locale.conf
  2. 运行locale-gen
  3. 检查locale的输出
  4. 查看快照运行时是否没有错误

我在locale.conf中没有看到错误,但是运行local-gen并不能解决这个问题。

以下是相关的输出:

代码语言:javascript
运行
复制
# localectl list-locales
en_US.utf8

# grep -v "^#" /etc/locale.conf
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

# locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_GB.UTF-8
LC_COLLATE=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_MESSAGES=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=

# locale-gen
Generating locales...
en_US.UTF-8... done
Generation complete.

# locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_GB.UTF-8
LC_COLLATE=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_MESSAGES=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=

# locale -a
C
en_US.utf8
POSIX

下面是perl的警告:

代码语言:javascript
运行
复制
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = "",
        LC_ALL = (unset),
        LC_MEASUREMENT = "en_US.UTF-8",
        LC_PAPER = "en_US.UTF-8",
        LC_MONETARY = "en_US.UTF-8",
        LC_NAME = "en_US.UTF-8",
        LC_COLLATE = "en_US.UTF-8",
        LC_CTYPE = "en_US.UTF-8",
        LC_ADDRESS = "en_US.UTF-8",
        LC_NUMERIC = "en_US.UTF-8",
        LC_MESSAGES = "en_US.UTF-8",
        LC_TELEPHONE = "en_US.UTF-8",
        LC_IDENTIFICATION = "en_US.UTF-8",
        LC_TIME = "en_GB.UTF-8",
        LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").

当我在Konsole内运行locale (在X中)时,而在虚拟控制台中运行locale时,将出现以下行:

代码语言:javascript
运行
复制
locale: Cannot set LC_ALL to default locale: No such file or directory

我可以在虚拟控制台中运行管理器ls命令,而不会出错。

据我所知,Arch没有/etc/default/locale。我的任何一台拱形机器上都没有那个文件。

重新启动系统没有帮助。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2018-01-19 03:13:09

您的区域设置之一(即LC_TIME)被设置为尚未生成的区域设置(即en_GB.UTF-8)。如果在/etc/locale.gen中启用该区域设置并重新生成区域设置,则错误将消失。

由于设置与/etc/locale.conf中的设置不同,您可能已经在启动脚本中放置了覆盖。由于此错误不发生在虚拟控制台中,因此我怀疑.xinitrc.xprofile。但是,如果您使用的是完整的桌面环境,这些环境通常都有自己的设置,包括区域设置。

票数 10
EN

Unix & Linux用户

发布于 2022-06-04 07:09:51

如果使用KDE (KDE5),可能会出现重写的另一个地方:

代码语言:javascript
运行
复制
./.config/plasma-locale-settings.sh
./.config/plasma-localerc

这可以在KDE系统设置中配置。

基本上,如果locale输出与/etc/locale.conf中配置的不同,这意味着存在一些覆盖。正如福克斯先前回答的那样,丢失的区域设置应该在/etc/locale.gen中启用并重新生成,或者/etc/locale.conf和任何其他区域设置配置都应该使用/etc/locale.gen中可用的任何区域设置。

这也修复了bsdtar:bsdtar: Failed to set default locale的问题。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/418141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档