このエントリーをはてなブックマークに追加

概要

 CentOS 7.5でシステムロケールとシステムキーボードレイアウトを変更します。 検証に利用したAWSのCentOS 7 AMIではロケールもキーボードレイアウトもアメリカ&英語に設定されていますが、 これを日本&日本語に変更します。 なお、コマンドラインで表示される情報は原則として英語前提でレイアウトされているため、 日本語表示だと表示がずれてしまうケースがあったので、個人的には英語のまま使い続けています。

構成

検証環境

 サーバにはAmazonのEC2インスタンスを利用しました。 AmazonマシンイメージはAWS標準のものではなく、AWS Marketplaceから取得しています。 サーバのスペックは以下のとおりです。

■サーバスペック
項目内容
AmazonマシンイメージCentOS 7 (x86_64) - with Updates HVM
インスタンスタイプt2.micro
vCPU1
メモリ1GiB
ディスクSSD 8GiB
リージョンアジアパシフィック (東京)

サーバ構成

OSバージョン

CentOS 7.5.1804 x86_64

環境構築

(1) システムロケールとキーボードレイアウトの確認

 今回はAWSのCentOS 7マシンイメージを使用していますが、 システムロケールとキーボードレイアウトの初期設定は以下の通りとなっていました。

$ sudo su -
Last login: Thu Jan  3 07:13:07 UTC 2019 on pts/0
# localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: us
      X11 Layout: us

 やはり英語でした。 普段利用する上で特に不自由を感じたことはありませんが、今回はこれを日本語に変更してみます。

(2) 使用可能な日本語ロケールの確認

 localectlのlist-localesコマンドを実行すると、設定可能なロケールの一覧が表示されます。 このコマンドでは世界中のロケールが表示されるため全部で785個表示されます。 その中からに日本に関連するものだけを抽出すると6つでした。

# localectl list-locales | wc -l
785
# localectl list-locales | grep ja
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc

(3) 使用可能なキーボードマッピングの確認

 localectlのlist-keymapsコマンドを実行すると、設定可能なキーボードマッピングの一覧が表示されます。 こちらも全部で530個あるので、その中から日本語に関連するものだけを抽出すると5つでした (ひょっとしたらjpでフィルタするのは正しくないかもしれませんが)。

# localectl list-keymaps | wc -l
530
# localectl list-keymaps | grep jp
jp
jp-OADG109A
jp-dvorak
jp-kana86
jp106

(4) システムロケールの設定

 先ほど確認した中から、システムロケールに「ja_JP.utf8」を選択して設定します。 ただし、 localctl set-locale を実行しただけだと、設定ファイル /etc/locale.conf に値が書き込まれるだけで 実際にはまだロケールの変更が反映されていませんので、設定ファイルを読み込んで変更を反映させます。 設定の反映って結局は環境変数のLANGに値を設定しているだけですが。 なお、sourceで設定ファイルを読み込む以外にも、ログアウト、ログインするだけでもシステムロケールの変更が反映されます。

# localectl set-locale LANG=ja_JP.utf8
# localectl status
   System Locale: LANG=ja_JP.utf8 ←変わったが設定ファイルの内容を表示しているだけ
       VC Keymap: us
      X11 Layout: us
# cat /etc/locale.conf
LANG=ja_JP.utf8 ←設定ファイルの内容も変わっている
# echo $LANG
en_US.UTF-8 ←環境変数LANの値は変わっていない
# source /etc/locale.conf
# echo $LANG
ja_JP.utf8 ←環境変数LANGの値も変わった

(5) システムキーボードマッピングの設定

 先ほど確認した中から、システムキーボードマッピングに「jp106」を選択して設定します。 jp106は日本で一般的な(と思う)日本語106キーボードですが、 詳細はELECOM社の106キーボード説明ページをご参照ください。

# localectl set-keymap jp106
# localectl status
   System Locale: LANG=ja_JP.utf8
       VC Keymap: jp106 ←変わった
      X11 Layout: jp   ←変わった
       X11 Model: jp106 ←追加された
     X11 Options: terminate:ctrl_alt_bksp ←追加された

動作確認

(1) ロケールが日本語に変更されたことの確認

 ロケール変更後は日本語で表示可能な部分は日本語に変わります。

# date
2019年  1月 22日 火曜日 20:28:11 UTC ←日本表示になった
# rpm -qi ←わざと引数を間違える
rpm: 問い合わせのための引数が指定されていません。 ←エラーメッセージが日本語になった
# rpm -qi systemd
Name        : systemd
Version     : 219
Release     : 57.el7
Architecture: x86_64
Install Date: 2018年06月05日 14時08分27秒 ←日付部分は日本表示になった
Group       : Unspecified
Size        : 24389374
License     : LGPLv2+ and MIT and GPLv2+
Signature   : RSA/SHA256, 2018年04月25日 11時48分21秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : systemd-219-57.el7.src.rpm
Build Date  : 2018年04月11日 07時37分32秒
Build Host  : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem 
Vendor      : CentOS
URL         : http://www.freedesktop.org/wiki/Software/systemd
Summary     : A System and Service Manager
Description : ←パッケージの説明は日本語が準備されていないので英語のまま
systemd is a system and service manager for Linux, compatible with
SysV and LSB init scripts. systemd provides aggressive parallelization
capabilities, uses socket and D-Bus activation for starting services,
offers on-demand starting of daemons, keeps track of processes using
Linux cgroups, supports snapshotting and restoring of the system
state, maintains mount and automount points and implements an
elaborate transactional dependency-based service control logic. It can
work as a drop-in replacement for sysvinit.