LoginSignup
8
8

More than 5 years have passed since last update.

Ubuntu 18.04 「can't set the locale; make sure $LC_* and $LANG are correct」のエラー対処

Last updated at Posted at 2018-08-29

SSHでリモートマシンにログインして、コマンドを実行すると、「can't set the locale; make sure \$LC_* and $LANG are correct」というエラーが出力されました。この対処法を記しておきます。

環境

  • Ubuntu 18.04 LTS

エラーの内容

出力されたエラーを直訳すると「ロケールを設定できない;$LC_*と$LANGが正しいか確認して」となります。
つまり、ロケール関係の変数の中で設定されていないものがあったり、様々なロケールが入り混じっていたりした場合に、このエラーが出力されます。

対処方法

直接接続の場合

まずは、どのロケール変数の設定不備かを確認します。

$ locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=ja_JP.UTF-8
LC_TIME=ja_JP.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=ja_JP.UTF-8
LC_MESSAGES="en_US.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=

この例ではLC_ALLの設定不備があります。

$ export LC_ALL=en_US.UTF-8
$ sudo locale-gen en_US.UTF-8
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.
$ sudo dpkg-reconfigure locales
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.

sudo dpkg-reconfigure localesの実行後に下記のような画面が表示されますので、自分が設定したい言語を設定してください。ここでは、en_US.UTF-8を選択します。
Screenshot from 2018-08-29 17-36-21.png

これで、エラーの対応は終了です。

SSHの場合

SSHの場合ではロケール関係の変数をクライアントサイドかサーバーサイドで制御してあげればエラーはなくなります。
やることは該当する一行をコメントアウトするだけです。←超簡単w

ただし、直接接続した時にエラーが出力されない状態が前提です。(上記の直接接続の場合を参照してください)

①クライアントサイド

ロケール変数の送信をストップさせます。

$ sudo vi /etc/ssh/ssh_config
- SendEnv LANG LC_*
+ #SendEnv LANG LC_*

②サーバーサイド

ロケール変数の受信をストップさせます。

$ sudo vi /etc/ssh/sshd_config
- AcceptEnv LANG LC_*
+ #AcceptEnv LANG LC_*

$ sudo systemctl restart sshd

これでSSH経由でもエラーがなくなりました。
おわり!!

参考

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8