Perl
を実行すると、警告が表示されます。
Perl:warning:ロケールの設定に失敗しました Perl:warning:あなたのロケール設定を確認してください: LANGUAGE =(設定解除)、 LC_ALL =(設定解除)、 ] LANG = "en_US.UTF-8" があなたのシステムでサポートされインストールされています。 Perl:warning:標準ロケール( "C")にフォールバックします。
どうやって直すの?
あなたの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終了 $
恒久的な修正を行うには、次のいずれかを選択してください。
LANG
環境変数を設定します。ssh hunter2
ではなく、クライアントサイドのegを変更してください。コマンドLANG=C ssh hunter2
を使用してください。SendEnv LANG LC_*
ファイルの/etc/ssh/ssh_config
行をコメントアウトして、sshが環境変数を送信しないようにしてください。 (おかげで この答え 。 バグ1285を見てください もっとOpenSSHに。/)これは、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
Debootstrapを使用してrootfsを作成している場合は、ロケールを生成する必要があります。次のコマンドを実行してこれを実行できます。
# (optional) enable missing locales
Sudo nano /etc/locale.gen
# then regenerate
Sudo locale-gen
これは一般的にあなたのLinuxマシンにロケールを正しく設定していないことを意味します。
DebianやUbuntuでは、それはあなたがする必要があることを意味します
$ Sudo locale-gen $ Sudo dpkg-reconfigure locales
man locale-gen も参照してください。
つかいます:
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が結果にならなかったのです。
重要!これは一時的な解決策です。セッションごとに実行する必要があります。
Git を使用しているときに同じ警告が表示される
この警告を解決するには{チェックマークを外してSet locale environment variable on startup
オプションを選択して、端末を再起動してください。下のスクリーンショットは私の端末設定を表しています。
Ubuntuでの簡単な修正です。コマンドラインから次のコマンドを実行して、最初からロケールを生成する必要があります。
Sudo locale-gen en_US en_US.UTF-8
Sudo dpkg-reconfigure locales
これでロケールが作成されてから再設定されます。
私は今これを使っています:
$ 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
/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
debianでは、多くのことを調べた後、これがうまくいきました。
最初:
Sudo apt-get purge locales
その後:
Sudo aptitude install locales
そして有名な
Sudo dpkg-reconfigure locales
これによりロケールが削除され、ロケールが再インストールされ、libc6が2.19から2.13にダウングレードされます。これが問題です。それから再びロケールを設定します。
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
私のために働きました。
サーバーのLinuxに接続するために Mac OS X v10.10 (Yosemite)以上を使用している場合は、次の手順を試すことができます。
ファイル/ etc/ssh/sshd-configを元の状態に保ってください。
〜/ .bash_profileを付けてください
export LANG="en_US"
export LC_ALL=$LANG.UTF-8
実行する
dpkg-reconfigure locales
そして「en_US.UTF-8」を選択してください
/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
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
Sudo nano /etc/locale.gen
使用したいロケールのコメントを外します(例:en_US.UTF-8 UTF-8
):
次に実行します。
Sudo /usr/sbin/locale-gen
私にとっては、.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
よろしくお願いいたします。
これは簡単な答えです。再起動後に設定解除されないロケールを設定します。まず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
~/.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
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").
これで問題は解決しました。
私はこのスレッドが古くなっているのを知っていますが、誰かがこれを役に立つと思うかもしれません。私はこれがどれほど迷惑になるかを知っています。
受け入れられた答えに従う:
LANG = C sshハンター2。
LC_ALL = C sshハンター2
クライアント側で私のためにトリックをしました。
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で接続しました。私のために働きました:)
LC_ALL="en_GB.utf8"
に/etc/environment
を追加して再起動します。それで全部です。
足りないロケールを.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
私の場合、debian8.6では、設定を変更する必要がありました。
/etc/ssh/ssh_config
の#AcceptEnv LANG LC_*
sshd_config
の場合は#SendEnv LANG LC_*
それからsshサービスを再起動してください。
やっと
locale-gen en_US.UTF-8
とdpkg-reconfigure locales
いつものように、悪魔は細部にあります...
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
私にとっては、 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
その後再起動してください...
ロケールの問題を気にしないのであれば、 Perl_BADLANG=0
に設定できます。もちろん、これは間違ったローカライゼーションをもたらす可能性があります。
別のGit関連の回答:
問題の原因はGit server かもしれません。他の方法がすべて失敗する場合は、 server でdpkg-reconfigure locales
(またはあなたのディストリビューションに適したもの)を試してください。
前の答えはすべて間違っています。メッセージは明確です - ロケールがありません。解決策は適切なロケールを追加することです。 /etc/locale.genファイルを編集して、存在しないと報告されているロケールの前にある#記号を削除してから、次のコマンドを発行します。
$ Sudo locale-gen
これは実際に/etc/locale.genで指定されたロケールを生成するため、メッセージは表示されません。
私の場合、これが出力でした。
LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = "ro_RO.UTF-8",
LC_ADDRESS = "ro_RO.UTF-8",
....
解決策は次のとおりです。
Sudo locale-gen ro_RO.UTF-8
ssh
は、デフォルトでLCロケール変数を上書きします。 /etc/ssh/sshd_config
を参照してください。
AcceptEnv LANG LC_*
だからあなたはあなたのローカルシェルでこれらの変数を設定する必要があるかもしれません。
英国のキーボード/ロケールを使用している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
を編集することでこれを直しましたPerl
がen_US.utf8
を見つけて実行することを期待していたlocal-gen
ロケール。
(私は pac-manager を使います。これはAURのPerl
モジュールを全部使っているので、私の特定の場合にPerl
を再インストールするのは面倒です)
Debianユーザーの場合、ロケールを変更してマシンの言語を変更すると、この問題が発生します。これは私がやったことです:
export LANG=fr_FR.UTF-8
export LC_ALL=fr_FR.UTF-8
fr_FR.UTF-8
-> etc/locale.gen
の行Sudo locale-gen
のコメントを解除して、不足しているパッケージを生成しますSudo update-locale
Sudo dpkg-reconfigure locales
でロケールをfr_FR.UTF-8
に設定します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
がんばろう!
CentOSでchrootを実行している場合は、この問題が発生しているアカウントのchroot環境に手動で/usr/lib/locale
をコピーしてみてください。
Ssh経由でリモートホストに接続しているときにこの問題が発生した場合、リモートシステムに特定のロケールがない可能性があります。これは他の答えで既によく説明されているので、ロケールのインストールと設定の方法を繰り返すつもりはありません。
他の答えが指摘したように、sshはあなたのローカルコンピュータのロケールをリモートホストに渡すべきです。たとえば、オーストラリアのロケールが設定されていて(たとえばen_AU.UFT-8
)、en_US.UTF-8
だけが付属している新しくセットアップされたUbuntuサーバーに接続しようとしている場合、この警告が表示されます。
この問題を解決するにはいくつかの選択肢があります。
クライアントに設定されているロケールと一致するように、必要なロケールをリモートホストにインストールします。
SSH設定を変更して、クライアントの環境変数を渡さないようにしてください。私はこれをお勧めしません。
.bashrcとその友人からロケール設定をエクスポートして、リモートマシンのロケールを上書きします。