ときどきロケールエラーが発生し、dpkg-reconfigure localesを実行して問題を解決しようとしました。出力は次のとおりです。
:~$ Sudo dpkg-reconfigure locales
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 the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_CTYPE to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_ALL to default locale: No such file or directory
Generating locales (this might take a while)...
en_US.UTF-8... done
Generation complete.
Perl: warning: Setting locale failed.
Perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = "C"
are supported and installed on your system.
Perl: warning: Falling back to the standard locale ("C").
Perl: warning: Setting locale failed.
Perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = "C"
are supported and installed on your system.
Perl: warning: Falling back to the standard locale ("C").
/ usr/bin/localeを探しましたが、私のシステムには存在しません。作成する必要がありますか?何を入れますか?
また、私は 関連する質問 を見つけました。これは、彼の問題の原因がsshd_configファイルにあることを示しています。ファイルには次のエントリが含まれていました。
AcceptEnv LANG LC_*
私は主にそれが私のVPSに問題を引き起こす可能性があることを懸念しています。私は何をすべきか?ありがとう!
最初:
Sudo apt-get purge locales
次に:
Sudo aptitude install locales
そして有名な:
Sudo dpkg-reconfigure locales
これにより、システムのロケールが取り除かれ、ロケールが再インストールされ、libc6が2.19から2.13にダウングレードされます。これが問題です。次に、ロケールを再度構成します。
私は長い間この問題を抱えていましたが、dpkg-reconfigureロケール、locale-genなどに関する通常のアドバイスはすべて役に立ちませんでした。だから私は環境変数を少し遊んでみたところ、システムがLC_CTYPE
環境変数を使用していることがわかりました。 UTF-8
は有効な値ではありません。 en_US.UTF-8
に設定すると修正されました。
変更を永続的にするために実行しました
update-locale LC_CTYPE=en_US.UTF-8
/etc/default/locale
に書き込みます。そして、システムを再起動して完全に有効にします。
これがボックスにSSH接続するときに発生し、コンソールでは発生しない場合は、(ローカルマシンで)sshクライアントを再構成してみてください。たとえばMac OS Xでは、/ private/etc/ssh_configを編集してコメントアウトします
# SendEnv LANG LC_*
Rasberry Pi Bulletin Board へのbredmanの投稿に感謝します。
次はManojとして行いましたが、#〜/ .bashrcに追加しました。
export LC_ALL=en_US.utf8
export LANGUAGE=en_US.utf8
古いDebianのインストールでこれを以前に見たことがありますが、いらいらしながら、問題が発生することはありません。
もし
/usr/bin/locale
見つからない場合は、(ルートとして)試してください:
apt-get install libc-bin
/ usr/bin/localeを提供するlibc-binがインストールされます。
Sshd_configのAcceptEnv行はかなり標準的なものであり、ここで問題の原因になることはありません。
ドイツ語のVPSを使用していて、英語の言語パックがインストールされていなかったため、ロケールを変更できませんでした。
インストール後、ようやくロケールを変更できました
aptitude install language-pack-en
/etc/ssh/sshd_config
(UsePAM no
)でsshのPAM認証を無効にした場合、/etc/pam.d/login
の責任のある構成は無効になります。
session required pam_env.so readenv=1 envfile=/etc/default/locale
結果:/etc/default/locale
は効果がないようです。
したがって、LANG変数を送信するか、~/.profile
、~/bashrc
などのプロファイルスクリプトでenv変数をエクスポートするようにクライアントを構成する必要があります。
私の新しいDebianインストールでは(最小)ロケールが完全に見つかりませんでした。インストール(aptitude install locales
)と実行中locale-gen
トリックをしました。 Chad Fellerが言ったようにやりますが、最初にパッケージlocales
がインストールされていることを確認してください。
リモートシステムへのssh実行中にエラーが発生し、リモートシステムを変更したくない場合(たとえば、sshd_configを変更して)、ローカルシステムで次の操作を実行できます(bashを想定)。
export LC_ALL=en_US
export LANGUAGE=en_US
その後 ssh user@remote
新しいDebian 10インストールに接続するMac。 Stack Exchange全体でググった答えはどれも役に立ちませんでした。これが何をしたかです(そして簡単で信頼性もありました):
sed -i "s/^AcceptEnv/#AcceptEnv/g" /etc/ssh/sshd_config
これをDebianボックスで実行すると、接続しているMac端末がサーバーロケールを混乱させるのを防ぎます( 詳細 )。
おまけとして、サーバーの セキュリティを向上させる になる可能性もあります。
debianシステムでは、これはあなたの問題を解決します:
apt-get install locales-all
ubuntuシステムでは、特定の言語パックをインストールします。次に例を示します。
apt-get install language-pack-en
locale-gen en_US.UTF-8