😺

Debianでlocaleの設定

2024/01/30に公開

最小限のインストールやcuiインストールだと
システムのロケールが設定されていないことがあるので、設定の仕方をここに書く。

言語の設定がないのはさまざまな種類の言語をあらかじめインストールしておくと、
容量が大きくなるからだろう。

なお、検索するとdpkg-reconfigureで設定しろとよく出るが、特に理由がない限り古いやり方なので参考にしないこと。

設定されているか確認

localeコマンドで設定の確認を行う。

locale

localeに関する環境変数がたくさん表示されると思う。

下のように表示されたら、localeが設定されていないので、設定していく。

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

localeのインストール

全ての言語のlocaleをインストールしておこう。
容量は現在では無視できるほどしか使わないので、配布しないかぎりトラブルや手間のほうが大きい。

sudo apt install locales-all

この時点でlocale-genまで実行されているので特に生成に関しては何もしなくて良い。

localeの設定と確認

localectl list-locales

こうすると下のようにずらりと言語の設定が並ぶので使うロケールを選択する。

aa_DJ.UTF-8
af_ZA.UTF-8
an_ES.UTF-8
ar_AE.UTF-8
ar_BH.UTF-8
ar_DZ.UTF-8
ar_EG.UTF-8
ar_IQ.UTF-8
ar_JO.UTF-8
ar_KW.UTF-8
ar_LB.UTF-8
ar_LY.UTF-8
ar_MA.UTF-8

通常だとシステムのロケールは英語のほうが良いので英語で設定しておく。

sudo localectl set-locale en_US.UTF-8

設定の確認

localctl

下のように表示されるはずです。

System Locale: LANG=en_US.UTF-8
VC Keymap: (unset)
X11 Layout: (unset)

LANGUAGEとLC_ALLの設定

言語に関わる環境変数LANGUAGEとLC_ALLの設定をしておきます。

この値はシステムだけでなく、ランタイムやビルド内でよく使われる
perlでも使われます。

メジャーなものだとapacheやpostgresqlに使われています。

perlにランタイムやビルドが依存しているツールだと
設定しておかないと、ビルドや実行時に失敗したりよくわからないエラーに
なるのでとりあえず設定しておきます。

ユーザーとシステム全体の設定なので、/etc/profileに下のように追記しておきます。

echo export LANGUAGE=en_US    >> /etc/profile
echo export LC_ALL=en_US.UTF8 >> /etc/profile

特定のユーザーでLANGUAGE,LC_ALLの値を変えたい場合は、そのユーザーの~/.bash_profile
に書くことで変更してください。

Discussion