Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第 2 章 系统位置和键盘配置

系统区域设置指定系统服务和用户界面的语言设置键盘布局设置控制文本控制台和图形用户界面中使用的布局

可以通过修改 /etc/locale.conf 配置文件或使用 localectl 实用程序来设置这些设置。此外,您可以使用图形用户界面执行任务;有关此方法的说明,请参阅 Red Hat Enterprise Linux 7 安装指南

2.1. 设置系统区域

系统范围的区域设置保存在 /etc/locale.conf 文件中,该文件在早期引导时由 systemd 守护进程读取。每个服务或用户都会继承 /etc/locale.conf 中配置的区域设置,单独程序或个人用户均覆盖它们。

/etc/locale.conf 的基本文件格式是一个以换行分隔的变量分配列表。例如:在 /etc/locale.conf 中带有英语信息的德语区域设置如下:

LANG=de_DE.UTF-8
LC_MESSAGES=C

此处,LC_MESSAGES 选项决定用于写入到标准错误输出的诊断消息的区域设置。要进一步指定 /etc/locale.conf 中的 区域设置,您可以使用几个其他选项,具体会在 表 2.1 “在 /etc/locale.conf 中可配置的选项” 中概述。有关这些选项的详情,请查看 locale(7) 手册页。请注意,不应在 /etc/locale.conf 中配置 LC_ALL 选项,它代表所有可能的选项。

表 2.1. 在 /etc/locale.conf 中可配置的选项

选项描述

LANG

为系统区域设置提供默认值。

LC_COLLATE

更改比较本地字母中字符串的函数行为。

LC_CTYPE

更改字符处理和分类功能以及多字节字符函数的行为。

LC_NUMERIC

描述数字通常的打印方式,详情包括十进制点和十进制逗号。

LC_TIME

更改当前时间、24 小时与 12 小时的显示。

LC_MESSAGES

确定用于写入到标准错误输出的诊断消息的区域设置。

2.1.1. 显示当前状态

localectl 命令可用于查询和更改系统区域设置和键盘布局设置。要显示当前的设置,请使用 status 选项:

localectl status

例 2.1. 显示当前状态

上一命令的输出列出了当前设置的区域设置、为控制台和 X11 窗口系统配置的键盘布局。

~]$ localectl status
  System Locale: LANG=en_US.UTF-8
    VC Keymap: us
   X11 Layout: n/a

2.1.2. 列出可用的区域

要列出您的系统所有可用区域,请输入:

localectl list-locales

例 2.2. 列出区域

假设您想要选择特定的英语区域设置,但您不确定它是否在系统中可用。您可以使用以下命令列出所有英语区域来检查:

~]$ localectl list-locales | grep en_
en_AG
en_AG.utf8
en_AU
en_AU.iso88591
en_AU.utf8
en_BW
en_BW.iso88591
en_BW.utf8

output truncated

2.1.3. 设置区域

要设置默认系统区域设置,以 root 用户身份运行以下命令:

localectl set-locale LANG=locale

使用区域名称替换 locale,使用 localectl list-locales 命令找到。以上语法还可用于从 表 2.1 “在 /etc/locale.conf 中可配置的选项” 配置参数。

例 2.3. 更改默认区域

例如,如果要将 English 设为默认区域设置,请先使用 list-locales 来查找此区域设置的名称。然后,作为 root 用户 以以下格式输入命令:

~]# localectl set-locale LANG=en_GB.utf8

2.1.4. 在使用 Kickstart 安装时永久进行系统区域设置

使用 Red Hat Kickstart 安装方法安装 Red Hat Enterprise Linux 时,升级操作系统后系统区域设置可能不会保留。

当 Kickstart 文件的 %packages 部分包含 --instLang 选项时,_install_langs RPM 宏被设置为这个安装的特定值,并相应地调整已安装的区域集合。但是,这个调整只会影响此安装,而不是后续升级。如果升级重新安装 glibc 软件包,则会升级整个区域集合,而不是只升级您在安装过程中请求的区域设置。

为避免这种情况,请永久选择区域设置。您有以下选项:

在 Kickstart 安装过程中设置 RPM 宏

  1. 修改 Kickstart 文件的 %post 部分:

    LANG=en_US
    echo "%_install_langs $LANG" > /etc/rpm/macros.language-conf
    
    yum-config-manager --setopt=override_install_langs=$LANG --save
  2. 修改 Kickstart 文件的 %packages 部分:

    %packages
    yum-utils*
    %end

全局设置 RPM 宏

  1. /etc/rpm/macros.language-conf 中创建包含以下内容的 RPM 配置文件:

    %_install_langs LANG

    LANGinstLang 选项的值。

  2. 使用以下内容更新 /etc/yum.conf 文件:

    override_install_langs=LANG