Docker centos:centos8のロケール等を設定
概要
dockerでcentos:centos8のコンテナを作った時に、日本語ロケールになっていなかったので、設定した。
設定した手順をメモ書きする。
現在のロケール値を確認する
# locale 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 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 -a | grep ja_JP #
日本語ロケールが定義されていない。
日本語の言語パックを入れる
glibc-locale-source と glibc-langpack-ja をインストール
# dnf install glibc-locale-source glibc-langpack-ja ~~(省略)~~ # # locale -a | grep ja_JP 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_COLLATE to default locale: No such file or directory ja_JP.eucjp ja_JP.utf8
ja_JP.eucjp と ja_JP.utf8 が入るようになったが、以前とエラーが出ている。
エラーの原因は、おそらくen_US.utf8 がインストールされていないことを推測。
以下のように対処する。
英語の言語パックを入れる
# LANG=C dnf install langpacks-en glibc-langpack-en Last metadata expiration check: 2:17:15 ago on Thu Oct 22 13:03:32 2020. Package langpacks-en-1.0-12.el8.noarch is already installed. Dependencies resolved. ======================================================================================== Package Architecture Version Repository Size ======================================================================================== Installing: glibc-langpack-en x86_64 2.28-101.el8 BaseOS 821 k Transaction Summary ======================================================================================== Install 1 Package Total download size: 821 k Installed size: 6.0 M Is this ok [y/N]: y Downloading Packages: glibc-langpack-en-2.28-101.el8.x86_64.rpm 3.6 MB/s | 821 kB 00:00 ---------------------------------------------------------------------------------------- Total 993 kB/s | 821 kB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : glibc-langpack-en-2.28-101.el8.x86_64 1/1 Running scriptlet: glibc-langpack-en-2.28-101.el8.x86_64 1/1 Verifying : glibc-langpack-en-2.28-101.el8.x86_64 1/1 Installed: glibc-langpack-en-2.28-101.el8.x86_64 Complete!
現在のロケール値を再確認する
# locale 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=
これまで出ていたエラーがでなくなったが、英語ロケールになっている。
日本語ロケールに設定
# cat /etc/locale.conf LANG=ja_JP.UTF-8 # source /etc/locale.conf ← これが重要! # 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= # # echo $LANG ja_JP.UTF-8 # date 2020年 10月 22日 木曜日 15:28:22 UTC
日本語環境にはなったが、TZが日本になっていない。
日本TZに設定する
# timedatectl set-timezone Asia/Tokyo # date 2020年 10月 23日 金曜日 00:31:30 JST