ロケール未設定で日本語が文字化けし、perl の警告が出続ける
症状(よく出るエラー)
日本語ファイル名が ???? や豆腐状に化ける。コマンドを打つたびに perl: warning: Setting locale failed. / perl: warning: Falling back to the standard locale ("C"). や locale: Cannot set LC_ALL to default locale と表示される。原因
プログラムは LANG や LC_ALL といった環境変数を見て文字コードやメッセージ言語を決めるが、指定されたロケール(例: ja_JP.UTF-8)がシステム上で生成されていないと設定に失敗し、最低限の C ロケールに落ちる。SSH クライアントが手元の LANG をサーバーへ送り込む設定(SendEnv LANG LC_*)になっていて、サーバー側にそのロケールが無い、という組み合わせが典型的な発生源。
直し方
Debian/Ubuntu なら sudo locale-gen ja_JP.UTF-8 でロケールを生成し、sudo update-locale LANG=ja_JP.UTF-8(英語運用なら en_US.UTF-8)で既定に設定して再ログインする。locale コマンドでエラーが出なくなれば解決。サーバーを触れない場合は、手元の ~/.ssh/config で SendEnv を止めるか、接続後に export LC_ALL=C.UTF-8 で凌ぐ。