旅するえんじにあ - Engineers to Travel -

旅するエンジニアの気まま備忘録

【Linux】warning: Please check that your locale settings

最近必要に迫られてperlを使うことがしばしある。

用途としてはtailやらshell内でちょっと使ったり。 そこまで多様はしないけど、使えるにこしたことはないと思い 今使っているサーバでperlコマンドで色々やってみようと。

早速今使っているサーバではperlはバージョンいくつなんだろうとコマンドを打ってみる

# perl -version
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LC_CTYPE = "UTF-8",
        LANG = "ja_JP.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi

Copyright 1987-2009, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

バージョンも古いことながら何よりもwarningが出ていらっしゃる。

locale settingsをしろと。 バージョンアップをしようにもこのエラーが気になってしょうがない。

色々調べたところ、どうやらローカルで使っている端末に何かしら原因があるらしい。

今使っているのは2012年製のMacBookAirなのだが、何が悪いんだと。 確かに昔寝ぼけてローカルで伝説のコマンド rm -rf / (通称バルス)をしたことはあるけど OSを入れなおして綺麗な体になったはずでは・・・

冗談はさておき、sshで接続する際にローカルPCの環境変数リモートホストに送信されていたのが原因らしいです。

ということでsshで接続していたサーバからローカルへ移り、

vim /etc/ssh/ssh_config

Macの場合パスワード聞かれるかもしれない。

ssh_configの中に

SendEnv LANG LC_*

という記述があるのでコメントアウトします。

# SendEnv LANG LC_*

これでsshで接続しなおせばエラーは消えます。

Macの場合 この設定を変えたくない場合はTerminal.appの設定で 詳細タブを選択し、起動時にロケール環境変数を設定という部分を変更すれば解決します。

ただし、ローカル環境の日本語表示が正しく表示されてしまうので、ssh_configを編集してしまったほうがいいかもしれないです。 環境を英語にしていれば問題ないんですけどね。