Ubuntu Linux

Linuxで「perl: warning: Setting locale failed.」というエラーメッセージが表示されたので原因や解決法などについての覚え書き。

 

 

環境

ローカルホストからSSHでリモートホストにログインしている環境。

ローカル: Desktop (Ubuntu 16.04)

リモート: Raspberry Pi3 Model B (Raspbian)

エラーメッセージ

リモートホストで perl を実行すると Perl が下記のようなエラーメッセージを吐いた。

ロケール設定を確認しなおすように警告されている。

$ perl -v
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LC_MEASUREMENT = "ja_JP.UTF-8",
	LC_PAPER = "ja_JP.UTF-8",
	LC_MONETARY = "ja_JP.UTF-8",
	LC_NAME = "ja_JP.UTF-8",
	LC_ADDRESS = "ja_JP.UTF-8",
	LC_NUMERIC = "ja_JP.UTF-8",
	LC_TELEPHONE = "ja_JP.UTF-8",
	LC_IDENTIFICATION = "ja_JP.UTF-8",
	LC_TIME = "ja_JP.UTF-8",
	LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").

SSH ではなく VNC を使ったリモートデスクトップにて perl -v を実行するとエラーは発生しなかった。

解決

方法A: locale-gen

リモートホストで /etc/locale.gen を開いて確認する。

en_US.UTF-8 UTF-8 以外の値がコメントアウトされていたので ja_JP.UTF-8 UTF-8 のコメントを解除して locale-gen を実行すると Perl のエラーが解決した。

$ sudo vim /etc/locale.gen
en_US.UTF-8 UTF-8
ja_JP.UTF-8 UTF-8

$ sudo locale-gen 
Generating locales (this might take a while)...
  en_US.UTF-8... done
  ja_JP.UTF-8... done
Generation complete.

方法B: ssh_config

locale.gen を編集して locale-gen をする方法で解決したがこちらの方法でもエラーは消えた。

ローカルホストの ssh_config を開き SendEnv LANG LC_* をコメントアウトして保存する。

再度 SSH でリモートホストにログインして perl -v を実行するとエラーは解決した。

$ sudo vim /etc/ssh/ssh_config
    # SendEnv LANG LC_*

 

【Linux】perl: Setting locale failed の解決
Tagged on:     

コメントを残す