1. ホーム
  2. perl

[解決済み] Perlからロケール設定の警告を修正する方法

2022-03-14 01:02:53

質問

を実行すると perl という警告が表示されます。

perl: 警告。ロケールの設定に失敗しました。
perl: 警告。ロケールの設定を確認してください。
    LANGUAGE = (未設定),
    LC_ALL = (未設定)。
    LANG = "en_US.UTF-8"
がサポートされており、システムにインストールされています。
perl: 警告。標準ロケール("C")にフォールバックしています。

どうすれば直るのですか?

どのように解決するのですか?

OSが知らない en_US.UTF-8 .

特定のプラットフォームについて言及されていませんが、あなたの問題を再現することができます。

% uname -a
OSF1 hunter2 V5.1 2650 alpha
% perl -e exit
perl: 警告。ロケールの設定に失敗しました。
perl: 警告。ロケールの設定を確認してください。
    LC_ALL = (未設定),
    LANG = "en_US.UTF-8"
    がサポートされ、システムにインストールされています。
perl: 警告。標準ロケール("C")にフォールバックしています。

私の推測では、新しいデスクトップマシンからこの古いホストに接続するためにsshを使用したのだと思います。一般的に /etc/ssh/sshd_config を含んでいます。

AcceptEnv LANG LC_*

で、クライアントがこれらの環境変数の値を新しいセッションに伝搬させることができるようにします。

警告は、フルアップのロケールを必要としない場合に、それを抑制する方法のヒントを与えてくれます。

% env LANG=C perl -e exit
%

またはBashで。

LANG=C perl -e exit
$ 

恒久的な修正には、以下のいずれかを選択します。

  1. 古いホストでは LANG 環境変数をシェルの初期化ファイルに記述してください。
  2. クライアント側の環境を変更します。 よりも、むしろ ssh hunter2 というコマンドを使用します。 LANG=C ssh hunter2 .
  3. 管理者権限を持っている場合は、環境変数の送信を停止するために SendEnv LANG LC_* の行は ローカル /etc/ssh/ssh_config ファイルを作成します。(ありがとうございます この回答 . 参照 バグ1285 を使用することで、OpenSSHを使用することができます)。