【Linux】RHEL9でロケールを日本語(Shift_JIS)に設定する方法まとめ

Linux

日本語ロケールに ja_JP.SJIS を使うように設定する方法をまとめました。

LinuxのデフォルトのロケールはUTF-8に設定されています。それに対して、Windows Server 2019, 2022などのWindowsOSはデフォルトのロケールがUTF-8ではなくShift-jisに設定されています。

本記事では、Linuxのロケールの設定をWindowsと同じShift-jisにする方法をまとめました。

現在OSに設定されているロケールを確認する

まずはOSに設定されているロケールを確認します。

# localectl status
4.3. システムロケールの設定 | Red Hat Product Documentation
4.3. システムロケールの設定 | Red Hat Documentation

こちらの環境で確認したところ以下の状態でした。

[root@RHEL95 ~]# localectl status
System Locale: LANG=ja_JP.UTF-8
    VC Keymap: jp
   X11 Layout: jp

上記の確認結果ではUTF-8になっています。

現在のユーザーに設定されているロケールを確認する

以下のコマンドで現在のユーザーに設定されているロケールを確認します。

# locale
[root@RHEL95 ~]# locale
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=

RHEL9.5のデフォルトはUTF-8です。※RHEL9.5での確認結果です。

設定可能なロケールを確認する

SHIFT_JISはRHEL9インストール時点でデフォルトで設定できるロケールにはなっていません。

[root@RHEL95 ~]# locale -a | grep sjis
[root@RHEL95 ~]#

Red Hatの記事を参考にSHIFT_JISをOSに設定する

以下のRed Hatの公式サイトの記事を参考にSHIFT_JISをOSに設定していきます。

日本語ロケールに ja_JP.SJIS を使うように設定する方法 - Red Hat Customer Portal
日本語ロケールに ja_JP.SJIS を使用するように設定するにはどうすればよいですか? JIS2004 の場合はどうですか?

必要なrpmパッケージのインストール

RHEL9では以下のコマンドを実行してglibc-locale-sourceとその依存関係にあるrpmパッケージをインストールします。

# yum install glibc-locale-source
[root@RHEL95 ~]# yum install glibc-locale-source
サブスクリプション管理リポジトリーを更新しています。
メタデータの期限切れの最終確認: 1:25:34 前の 2025年04月29日 13時31分14秒 に実施しました。
依存関係が解決しました。
=======================================================================================================================================================
 パッケージ                          アーキテクチャー       バージョン                          リポジトリー                                     サイズ
=======================================================================================================================================================
インストール:
 glibc-locale-source                 x86_64                 2.34-125.el9_5.8                    rhel-9-for-x86_64-appstream-rpms                 4.1 M
アップグレード:
 glibc                               x86_64                 2.34-125.el9_5.8                    rhel-9-for-x86_64-baseos-rpms                    2.0 M
 glibc-all-langpacks                 x86_64                 2.34-125.el9_5.8                    rhel-9-for-x86_64-baseos-rpms                     18 M
 glibc-common                        x86_64                 2.34-125.el9_5.8                    rhel-9-for-x86_64-baseos-rpms                    298 k
 glibc-gconv-extra                   x86_64                 2.34-125.el9_5.8                    rhel-9-for-x86_64-baseos-rpms                    1.7 M
 glibc-langpack-ja                   x86_64                 2.34-125.el9_5.8                    rhel-9-for-x86_64-baseos-rpms                    325 k

トランザクションの概要
=======================================================================================================================================================
インストール    1 パッケージ
アップグレード  5 パッケージ

ダウンロードサイズの合計: 26 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/6): glibc-2.34-125.el9_5.8.x86_64.rpm                                                                               1.1 MB/s | 2.0 MB     00:01
(2/6): glibc-locale-source-2.34-125.el9_5.8.x86_64.rpm                                                                 1.9 MB/s | 4.1 MB     00:02
(3/6): glibc-common-2.34-125.el9_5.8.x86_64.rpm                                                                        821 kB/s | 298 kB     00:00
(4/6): glibc-langpack-ja-2.34-125.el9_5.8.x86_64.rpm                                                                   747 kB/s | 325 kB     00:00
(5/6): glibc-gconv-extra-2.34-125.el9_5.8.x86_64.rpm                                                                   2.4 MB/s | 1.7 MB     00:00
(6/6): glibc-all-langpacks-2.34-125.el9_5.8.x86_64.rpm                                                                 3.0 MB/s |  18 MB     00:05
-------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                   4.5 MB/s |  26 MB     00:05
トランザクションを確認しています
トランザクションの確認に成功しました。
トランザクションをテストしています
トランザクションのテストに成功しました。
トランザクションを実行しています
  準備中           :                                                                                                                               1/1
  アップグレード中 : glibc-all-langpacks-2.34-125.el9_5.8.x86_64                                                                                  1/11
  アップグレード中 : glibc-common-2.34-125.el9_5.8.x86_64                                                                                         2/11
  アップグレード中 : glibc-gconv-extra-2.34-125.el9_5.8.x86_64                                                                                    3/11
  scriptletの実行中: glibc-gconv-extra-2.34-125.el9_5.8.x86_64                                                                                    3/11
  アップグレード中 : glibc-langpack-ja-2.34-125.el9_5.8.x86_64                                                                                    4/11
  scriptletの実行中: glibc-2.34-125.el9_5.8.x86_64                                                                                                5/11
  アップグレード中 : glibc-2.34-125.el9_5.8.x86_64                                                                                                5/11
  scriptletの実行中: glibc-2.34-125.el9_5.8.x86_64                                                                                                5/11
  インストール中   : glibc-locale-source-2.34-125.el9_5.8.x86_64                                                                                  6/11
  整理             : glibc-all-langpacks-2.34-125.el9_5.1.x86_64                                                                                  7/11
  整理             : glibc-gconv-extra-2.34-125.el9_5.1.x86_64                                                                                    8/11
  scriptletの実行中: glibc-gconv-extra-2.34-125.el9_5.1.x86_64                                                                                    8/11
  整理             : glibc-common-2.34-125.el9_5.1.x86_64                                                                                         9/11
  整理             : glibc-langpack-ja-2.34-125.el9_5.1.x86_64                                                                                   10/11
  整理             : glibc-2.34-125.el9_5.1.x86_64                                                                                               11/11
  scriptletの実行中: glibc-all-langpacks-2.34-125.el9_5.8.x86_64                                                                                 11/11
  scriptletの実行中: glibc-2.34-125.el9_5.1.x86_64                                                                                               11/11
  検証中           : glibc-locale-source-2.34-125.el9_5.8.x86_64                                                                                  1/11
  検証中           : glibc-2.34-125.el9_5.8.x86_64                                                                                                2/11
  検証中           : glibc-2.34-125.el9_5.1.x86_64                                                                                                3/11
  検証中           : glibc-all-langpacks-2.34-125.el9_5.8.x86_64                                                                                  4/11
  検証中           : glibc-all-langpacks-2.34-125.el9_5.1.x86_64                                                                                  5/11
  検証中           : glibc-common-2.34-125.el9_5.8.x86_64                                                                                         6/11
  検証中           : glibc-common-2.34-125.el9_5.1.x86_64                                                                                         7/11
  検証中           : glibc-gconv-extra-2.34-125.el9_5.8.x86_64                                                                                    8/11
  検証中           : glibc-gconv-extra-2.34-125.el9_5.1.x86_64                                                                                    9/11
  検証中           : glibc-langpack-ja-2.34-125.el9_5.8.x86_64                                                                                   10/11
  検証中           : glibc-langpack-ja-2.34-125.el9_5.1.x86_64                                                                                   11/11
インストール済みの製品が更新されています。

アップグレード済み:
  glibc-2.34-125.el9_5.8.x86_64                      glibc-all-langpacks-2.34-125.el9_5.8.x86_64          glibc-common-2.34-125.el9_5.8.x86_64
  glibc-gconv-extra-2.34-125.el9_5.8.x86_64          glibc-langpack-ja-2.34-125.el9_5.8.x86_64
インストール済み:
  glibc-locale-source-2.34-125.el9_5.8.x86_64

完了しました!

インストールしたら再起動します。(exitして接続しなおすだけでも問題ないかもしれません)

# shutdown -r now

文字をマッピングする

以下のコマンドを実行して文字をマッピングします。

# localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS --no-archive

上記のコマンドを –no-archiveオプションなしで実行するだけだと、特定のコマンド実行時にrpmパッケージの更新によってロケールの設定が上書きされてしまうので–no-archiveオプションを付けます。

--no-archive オプションを使用せずにインストールすると、アーカイブ /usr/lib/locale/locale-archive に新しいロケールが追加されます。

以下のアップデートによってロケールの設定情報が上書きされることを防ぐために--no-archive オプション使用します。

# yum update

もしくは

# yum update glibc glibc-common nscd
glibc-* アップデートでカスタムロケールを保存する - Red Hat Customer Portal
glibc-* を更新する時にカスタムロケールを保存するにはどうしたら良いですか? glibc-* を更新すると、カスタマイズしたロケール情報が削除されるのはなぜですか? glibc-common を再インストールした後、カスタムロケールを...

実際に実行してみます。

[root@RHEL95 ~]# localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS --no-archive
[warning] character map `SHIFT_JIS' is not ASCII compatible, locale not ISO C compliant [--no-warnings=ascii]
[root@RHEL95 ~]#

注意書きが出たため、以下のオプションもつけて実行します。

--no-warnings=ascii
[root@RHEL95 ~]# localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS --no-archive --no-warnings=ascii
[root@RHEL95 ~]#

問題なく実行できました。

ロケールを設定する

以下のコマンドで現在使用しているユーザーのロケールを変更します。このコマンドは一時的なものなので永続化させていきます。

# LANG=ja_JP.SJIS

/etc/sysconfig/i18nファイルに以下の内容を記載して再起動してもGUIのロケールが変わらないようにします。

本ファイルはRHEL9ではGUIにのみ影響があります。

GUI では、/etc/sysconfig/i18n で設定された LANG になります。

コンソール使用時に、/etc/sysconfig/i18n で LANG=ja_JP.UTF-8 と指定していても LANG が en_US.UTF-8 に設定される - Red Hat Customer Portal
コンソールログイン時に、/etc/sysconfig/i18n で LANG=ja_JP.UTF-8 と指定していても、LANG ENV が en_US.UTF-8 に設定されます。
/etc/sysconfig/i18n
LANG=ja_JP.SJIS
SUPPORTED=en_US.UTF-8:en_US:en:ja_JP.eucJP:ja_JP:ja:ja_JP.SJIS:ja
SYSFONT=lat0-sun16
SYSFONTACM=8859-15

ところで、最近のLinuxでは、このファイルがダミーになっており、ロケールの設定は「/etc/locale.conf」に行うようになっている、またロケール設定は「localectl」というツールを利用することになっているという場合があるので、注意してください。

ロケール設定ファイル /etc/sysconfig/i18n - Linux技術者認定 LinuC | LPI-Japan
Linuxを学習する上で出てくる素朴な疑問や、便利なテクニックなどを紹介しています。LinuCは、クラウド・DX時代に活躍するエンジニアに求められるLinuxを中心とした技術や知識を身につけることができるLinux技術者認定試験。出題範囲に...

システム全体のロケールを以下のコマンドで設定します。

localectl set-locale LANG=ja_JP.SJIS
[root@RHEL95 ~]# cat /etc/locale.conf
LANG=ja_JP.SJIS

RHEL7とRHEL8についての記載にはなっていますが、上記のコマンドで設定できる設定は/etc/locale.confに保存されます。

How to change system locale on RHEL7 or RHEL8? - Red Hat Customer Portal
How do I change the system-wide locale (or user-specific) for a local login? How do I change the locale for a ssh login?...

以下はRHEL9のドキュメントです。

システム全体にわたるロケール設定は /etc/locale.conf ファイルに保存され、システム起動の初期段階で systemd デーモンにより読み込まれます。/etc/locale.conf に設定したロケール設定は、個別のプログラムやユーザーが上書きしない限り、すべてのサービスやユーザーに継承されます。

4.3. システムロケールの設定 | Red Hat Product Documentation
4.3. システムロケールの設定 | Red Hat Documentation

現在のロケールを確認する

以下のコマンドで現在のユーザーのロケールを確認します。

# locale
[root@RHEL95 ~]# locale
LANG=ja_JP.SJIS
LC_CTYPE="ja_JP.SJIS"
LC_NUMERIC="ja_JP.SJIS"
LC_TIME="ja_JP.SJIS"
LC_COLLATE="ja_JP.SJIS"
LC_MONETARY="ja_JP.SJIS"
LC_MESSAGES="ja_JP.SJIS"
LC_PAPER="ja_JP.SJIS"
LC_NAME="ja_JP.SJIS"
LC_ADDRESS="ja_JP.SJIS"
LC_TELEPHONE="ja_JP.SJIS"
LC_MEASUREMENT="ja_JP.SJIS"
LC_IDENTIFICATION="ja_JP.SJIS"
LC_ALL=

以下のコマンドでシステム全体に設定されているロケールの情報を確認します。

# localectl status
[root@RHEL95 ~]# localectl status
System Locale: LANG=ja_JP.SJIS
    VC Keymap: jp
   X11 Layout: jp

問題なくSHIFT_JISに設定できました。

タイトルとURLをコピーしました