web-dev-qa-db-ja.com

Perlからロケール設定の警告を修正するにはどうすればいいですか?

Perlを実行すると、警告が表示されます。

Perl:warning:ロケールの設定に失敗しました
 Perl:warning:あなたのロケール設定を確認してください:
 LANGUAGE =(設定解除)、
 LC_ALL =(設定解除)、
 ] LANG = "en_US.UTF-8" 
があなたのシステムでサポートされインストールされています。
 Perl:warning:標準ロケール( "C")にフォールバックします。

どうやって直すの?

528
xain

あなたのOSはen_US.UTF-8を知らない。

あなたは特定のプラットフォームに言及しなかった、しかし私はあなたの問題を再現することができる:

%uname -a 
 OSF1ハンター2 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終了
 $ 

恒久的な修正を行うには、次のいずれかを選択してください。

  1. 古いホスト上で、シェルの初期設定ファイルにLANG環境変数を設定します。
  2. ssh hunter2ではなく、クライアントサイドのegを変更してください。コマンドLANG=C ssh hunter2を使用してください。
  3. 管理者権限がある場合は、localSendEnv LANG LC_*ファイルの/etc/ssh/ssh_config行をコメントアウトして、sshが環境変数を送信しないようにしてください。 (おかげで この答えバグ1285を見てください もっとOpenSSHに。/)
398
Greg Bacon

これは、Mac OS Lion(10.7)またはCygwin(Windows 10)で解決する方法です。

ホストマシンのbashrcまたはbash_profileに次の行を追加します。

# Setting for the new UTF-8 terminal support in Lion
export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

Zshを使用している場合は、zshrcを編集します。

# Setting for the new UTF-8 terminal support in Lion
LC_CTYPE=en_US.UTF-8
LC_ALL=en_US.UTF-8
432
Allen Bargi

Debootstrapを使用してrootfsを作成している場合は、ロケールを生成する必要があります。次のコマンドを実行してこれを実行できます。

# (optional) enable missing locales
Sudo nano /etc/locale.gen

# then regenerate
Sudo locale-gen

このヒントは https://help.ubuntu.com/community/Xenから来ています

184
Marc

これは一般的にあなたのLinuxマシンにロケールを正しく設定していないことを意味します。

DebianやUbuntuでは、それはあなたがする必要があることを意味します

$ Sudo locale-gen 
 $ Sudo dpkg-reconfigure locales

man locale-gen も参照してください。

133
Paul Tomblin

つかいます:

export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_TYPE=en_US.UTF-8

Debian で動作します。理由はわかりませんが、locale-genが結果にならなかったのです。

重要!これは一時的な解決策です。セッションごとに実行する必要があります。

127
artemn

MacOSおよびMac OS Xユーザーのみ

Git を使用しているときに同じ警告が表示される

この警告を解決するには{チェックマークを外してSet locale environment variable on startupオプションを選択して、端末を再起動してください。下のスクリーンショットは私の端末設定を表しています。

enter image description here

87

Ubuntuでの簡単な修正です。コマンドラインから次のコマンドを実行して、最初からロケールを生成する必要があります。

Sudo locale-gen en_US en_US.UTF-8
Sudo dpkg-reconfigure locales

これでロケールが作成されてから再設定されます。

35
jfreak53

私は今これを使っています:

$ cat /etc/environment
...
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8

その後、SSHセッションからログアウトして再度ログインします。

古い答え:

これだけが私を助けました:

$ locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_ALL=

$ Sudo su

# export LANGUAGE=en_US.UTF-8
# export LANG=en_US.UTF-8
# export LC_ALL=en_US.UTF-8

# locale-gen en_US.UTF-8
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.

# dpkg-reconfigure locales
Generating locales...
  en_AG.UTF-8... done
  en_AU.UTF-8... done
  en_BW.UTF-8... done
  en_CA.UTF-8... done
  en_DK.UTF-8... done
  en_GB.UTF-8... done
  en_HK.UTF-8... done
  en_IE.UTF-8... done
  en_IN.UTF-8... done
  en_NG.UTF-8... done
  en_NZ.UTF-8... done
  en_PH.UTF-8... done
  en_SG.UTF-8... done
  en_US.UTF-8... up-to-date
  en_ZA.UTF-8... done
  en_ZM.UTF-8... done
  en_ZW.UTF-8... done
Generation complete.

# exit

$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
25
warvariuc

/etc/environmentに以下を追加することで、DebianとUbuntuの問題が解決しました(もちろん、使用したいロケールに合わせて修正してください)。

LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
LC_TYPE=en_US.UTF-8
23
joscarsson

debianでは、多くのことを調べた後、これがうまくいきました。

最初:

Sudo apt-get purge locales

その後:

Sudo aptitude install locales

そして有名な

Sudo dpkg-reconfigure locales

これによりロケールが削除され、ロケールが再インストールされ、libc6が2.19から2.13にダウングレードされます。これが問題です。それから再びロケールを設定します。

20
tkjef

Ubuntuではこれを使います。

#export LANGUAGE=en_US.UTF-8
#export LC_ALL=en_US.UTF-8
#export LANG=en_US.UTF-8
#export LC_TYPE=en_US.UTF-8

私のために働きました。

13
Amjith

サーバーのLinuxに接続するために Mac OS X v10.10 (Yosemite)以上を使用している場合は、次の手順を試すことができます。

  1. ファイル/ etc/ssh/sshd-configを元の状態に保ってください。

  2. 〜/ .bash_profileを付けてください

    export LANG="en_US"
    export LC_ALL=$LANG.UTF-8
    
  3. 実行する

    dpkg-reconfigure locales
    

    そして「en_US.UTF-8」を選択してください

11
dsandrade

/etc/default/locale logout、login でロケールを適切に設定してから、通常のコマンドを実行する必要があります。

root@Host:~# echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale
root@Host:~# exit
local-user@local:~$ ssh root@Host
root@Host:~# locale-gen en_US.UTF-8
root@Host:~# dpkg-reconfigure locales
10
glarrain
Perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_ALL to default locale: No such file or directory

解決策:

これを試してください( uk_UA.UTF-8 が私の現在のロケールです。自分のロケールを書いてください、例えば en_US.UTF-8 !)。

Sudo locale-gen uk_UA.UTF-8

この。

Sudo dpkg-reconfigure locales
9
bogdanvlviv
Sudo nano /etc/locale.gen

使用したいロケールのコメントを外します(例:en_US.UTF-8 UTF-8):

次に実行します。

Sudo /usr/sbin/locale-gen

出典: http://people.debian.org/~schultmc/locales.html

9
Thomas Jensen

私にとっては、.bashrcファイルadd exportを編集してこのエラーを修正します。最初のコメントの後に追加してください。

言語サポートを追加します。

export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_TYPE=en_US.UTF-8

よろしくお願いいたします。

7
LandiLeite

これは簡単な答えです。再起動後に設定解除されないロケールを設定します。まずbashファイルを開いて編集します。

nano .bashrc

これらの行をファイルに追加します。

export LC_ALL="en_US.UTF-8"
export LANG="en_US.UTF-8"
export LANGUAGE="en_US.UTF-8"

bashをリロードして変更を有効にします。

source ~/.bashrc

試験結果 :

locale
6
Alouani Younes

~/.bashrc~/.bash_profile/etc/environmentなどに正しいロケールを追加すると問題は解決しますが、/etc/default/localeの設定を上書きするため、お勧めできません。混乱を招き、ロケールが最悪の場合一貫して適用されない可能性があります。

代わりに、/etc/default/localeを直接編集する必要があります。これは次のようになります。

LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE=en_US

変更は次回ログインしたときに有効になります。既存のシェルで新しいロケールを取得するには、次のように/etc/default/localeを入力します。

$ . /etc/default/locale
5
Nuvanda

MacOS High SierraのiTerm2.appからDigitalOceanまたは他のクラウドホスティングプロバイダに接続していて、いくつかのコマンドでこのエラーが発生した場合

Perl: warning: Setting locale failed.
Perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_CTYPE = "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").

これで問題は解決しました。

enter image description here

私はこのスレッドが古くなっているのを知っていますが、誰かがこれを役に立つと思うかもしれません。私はこれがどれほど迷惑になるかを知っています。

5
Blago Eres

受け入れられた答えに従う:

LANG = C sshハンター2。

LC_ALL = C sshハンター2

クライアント側で私のためにトリックをしました。

4
Alex Kosenkov

Zsh ohmyzshを使って、これを.zshrcに追加しました。

 # You may need to manually set your language environment
 LANGUAGE=en_US.UTF-8
 LANG=en_US.UTF-8
 LC_CTYPE=en_US.UTF-8
 LC_ALL=en_US.UTF-8

export LANG=en_US.UTF-8行を削除して

新しいタブを開き、SSHで接続しました。私のために働きました:)

4
Joseph Briggs

LC_ALL="en_GB.utf8"/etc/environmentを追加して再起動します。それで全部です。

3
zires

足りないロケールを.bash_profileに追加する

echo "export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8">>~/.bash_profile

それからあなたの.bash_profileを入手してください

source ~/.bash_profile
2

私の場合、debian8.6では、設定を変更する必要がありました。

/etc/ssh/ssh_config#AcceptEnv LANG LC_*

sshd_configの場合は#SendEnv LANG LC_*

それからsshサービスを再起動してください。

やっと

locale-gen en_US.UTF-8dpkg-reconfigure locales

2
張祐榕

いつものように、悪魔は細部にあります...

Mac OS X v10.7.5 (ライオン)、 Django エラーを修正するには、私の~/.bash_profileに設定します。

export LANG=en_EN.UTF-8
export LC_COLLATE=$LANG
export LC_CTYPE=$LANG
export LC_MESSAGES=$LANG
export LC_MONETARY=$LANG
export LC_NUMERIC=$LANG
export LC_TIME=$LANG
export LC_ALL=$LANG

そして長い間、Perlを使用しているときに警告が出ました。

私の悪い!後で気づいたように、私のシステムはen_US.UTF-8です。から変更するだけで修正できました

export LANG=en_EN.UTF-8

export LANG=en_US.UTF-8
2
Luca Bonavita

私にとっては、 Ubuntu 16.04 (Xenial Xerus)では、以下のように動作します。

root@Host:~#locale-gen en_GB.UTF-8
root@Host:~#localectl set-locale LANG=en_GB.UTF-8,LC_ALL=en_GB.UTF-8

その後再起動してください...

1

ロケールの問題を気にしないのであれば、 Perl_BADLANG=0 に設定できます。もちろん、これは間違ったローカライゼーションをもたらす可能性があります。

1
Craig Ringer

別のGit関連の回答:

問題の原因はGit server かもしれません。他の方法がすべて失敗する場合は、 server dpkg-reconfigure locales(またはあなたのディストリビューションに適したもの)を試してください。

1
Adrian W

前の答えはすべて間違っています。メッセージは明確です - ロケールがありません。解決策は適切なロケールを追加することです。 /etc/locale.genファイルを編集して、存在しないと報告されているロケールの前にある#記号を削除してから、次のコマンドを発行します。

$ Sudo locale-gen

これは実際に/etc/locale.genで指定されたロケールを生成するため、メッセージは表示されません。

1

私の場合、これが出力でした。

LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = "ro_RO.UTF-8",
LC_ADDRESS = "ro_RO.UTF-8",
....

解決策は次のとおりです。

Sudo locale-gen ro_RO.UTF-8
1

sshは、デフォルトでLCロケール変数を上書きします。 /etc/ssh/sshd_configを参照してください。

AcceptEnv LANG LC_*

だからあなたはあなたのローカルシェルでこれらの変数を設定する必要があるかもしれません。

1
garaboncias

英国のキーボード/ロケールを使用しているArch Linuxでは、私は次のようなエラーがありました。

Perl: warning: Setting locale failed.
Perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_US.utf8"
  • 私のロケールを/etc/profileにエクスポートしても修正されませんでした。

  • 私は/etc/locale.genを編集することでこれを直しました
    Perlen_US.utf8を見つけて実行することを期待していたlocal-genロケール。

(私は pac-manager を使います。これはAURのPerlモジュールを全部使っているので、私の特定の場合にPerlを再インストールするのは面倒です)

1
Stuart Cardall

Debianユーザーの場合、ロケールを変更してマシンの言語を変更すると、この問題が発生します。これは私がやったことです:

  1. .bashrcを変更します。
export LANG=fr_FR.UTF-8
export LC_ALL=fr_FR.UTF-8
  1. ファイルfr_FR.UTF-8-> etc/locale.genの行Sudo locale-genのコメントを解除して、不足しているパッケージを生成します
  2. Sudo update-locale
  3. Sudo dpkg-reconfigure localesでロケールをfr_FR.UTF-8に設定します
  4. etc/default/localeファイルに行を追加:
LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
LC_TYPE=en_US.UTF-8
  1. コンピューターを再起動すると、すべてが正常に動作します

がんばろう!

0
Lala

CentOSでchrootを実行している場合は、この問題が発生しているアカウントのchroot環境に手動で/usr/lib/localeをコピーしてみてください。

0
EpicVoyage

Ssh経由でリモートホストに接続しているときにこの問題が発生した場合、リモートシステムに特定のロケールがない可能性があります。これは他の答えで既によく説明されているので、ロケールのインストールと設定の方法を繰り返すつもりはありません。

他の答えが指摘したように、sshはあなたのローカルコンピュータのロケールをリモートホストに渡すべきです。たとえば、オーストラリアのロケールが設定されていて(たとえばen_AU.UFT-8)、en_US.UTF-8だけが付属している新しくセットアップされたUbuntuサーバーに接続しようとしている場合、この警告が表示されます。

この問題を解決するにはいくつかの選択肢があります。

  1. クライアントに設定されているロケールと一致するように、必要なロケールをリモートホストにインストールします。

  2. SSH設定を変更して、クライアントの環境変数を渡さないようにしてください。私はこれをお勧めしません。

  3. .bashrcとその友人からロケール設定をエクスポートして、リモートマシンのロケールを上書きします。

0
lanoxx