web-dev-qa-db-ja.com

Debian squeezeのロケール設定を修正する方法

ときどきロケールエラーが発生し、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に問題を引き起こす可能性があることを懸念しています。私は何をすべきか?ありがとう!

18
blogjunkie

最初:

Sudo apt-get purge locales

次に:

Sudo aptitude install locales

そして有名な:

Sudo dpkg-reconfigure locales

これにより、システムのロケールが取り除かれ、ロケールが再インストールされ、libc6が2.19から2.13にダウングレードされます。これが問題です。次に、ロケールを再度構成します。

11
tkjef

私は長い間この問題を抱えていましたが、dpkg-reconfigureロケール、locale-genなどに関する通常のアドバイスはすべて役に立ちませんでした。だから私は環境変数を少し遊んでみたところ、システムがLC_CTYPE環境変数を使用していることがわかりました。 UTF-8は有効な値ではありません。 en_US.UTF-8に設定すると修正されました。

変更を永続的にするために実行しました

update-locale LC_CTYPE=en_US.UTF-8

/etc/default/localeに書き込みます。そして、システムを再起動して完全に有効にします。

8
Hongli Lai

これがボックスにSSH接続するときに発生し、コンソールでは発生しない場合は、(ローカルマシンで)sshクライアントを再構成してみてください。たとえばMac OS Xでは、/ private/etc/ssh_configを編集してコメントアウトします

# SendEnv LANG LC_*

Rasberry Pi Bulletin Board へのbredmanの投稿に感謝します。

8
Adrian Zaugg

次はManojとして行いましたが、#〜/ .bashrcに追加しました。

export LC_ALL=en_US.utf8
export LANGUAGE=en_US.utf8
2
Hauge

古いDebianのインストールでこれを以前に見たことがありますが、いらいらしながら、問題が発生することはありません。

もし

  /usr/bin/locale 

見つからない場合は、(ルートとして)試してください:

  apt-get install libc-bin

/ usr/bin/localeを提供するlibc-binがインストールされます。

Sshd_configのAcceptEnv行はかなり標準的なものであり、ここで問題の原因になることはありません。

2
Chad Feller

ドイツ語のVPSを使用していて、英語の言語パックがインストールされていなかったため、ロケールを変更できませんでした。

インストール後、ようやくロケールを変更できました

aptitude install language-pack-en
1
valentt

/etc/ssh/sshd_configUsePAM 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変数をエクスポートするようにクライアントを構成する必要があります。

もっと: http://wiki.debian.org/Locale#Standard

1
Jan-Philip Loos

私の新しいDebianインストールでは(最小)ロケールが完全に見つかりませんでした。インストール(aptitude install locales)と実行中locale-genトリックをしました。 Chad Fellerが言ったようにやりますが、最初にパッケージlocalesがインストールされていることを確認してください。

1
Achim Sperling

リモートシステムへのssh実行中にエラーが発生し、リモートシステムを変更したくない場合(たとえば、sshd_configを変更して)、ローカルシステムで次の操作を実行できます(bashを想定)。

export LC_ALL=en_US
export LANGUAGE=en_US

その後 ssh user@remote

1

新しいDebian 10インストールに接続するMac。 Stack Exchange全体でググった答えはどれも役に立ちませんでした。これが何をしたかです(そして簡単で信頼性もありました):

sed -i "s/^AcceptEnv/#AcceptEnv/g" /etc/ssh/sshd_config

これをDebianボックスで実行すると、接続しているMac端末がサーバーロケールを混乱させるのを防ぎます( 詳細 )。

おまけとして、サーバーの セキュリティを向上させる になる可能性もあります。

1
aexl

debianシステムでは、これはあなたの問題を解決します:

apt-get install locales-all

ubuntuシステムでは、特定の言語パックをインストールします。次に例を示します。

apt-get install language-pack-en

locale-gen en_US.UTF-8

0
Geza