ロケールの問題を修正するにはどうすればよいですか?

サービスを開始または停止するようなことをするたびに、このメッセージが表示されます。

perl: warning: Setting locale failed.   perl: warning: Please check that your locale settings:           LANGUAGE = "en_US:en",           LC_ALL = (unset),           LC_MESSAGES = "en_US.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_MESSAGES to default locale: No such file or directory   locale: Cannot set LC_ALL to default locale: No such file or directory   (Reading database ... 21173 files and directories currently installed.)  Removing bind9 ...   * Stopping domain name service... bind9                                        [ OK ]Processing triggers for man-db ...   locale: Cannot set LC_CTYPE to default locale: No such file or directory   locale: Cannot set LC_MESSAGES to default locale: No such file or directory   locale: Cannot set LC_ALL to default locale: No such file or directory   

このエラーを修正するにはどうすればよいですか?

初走 locale 現在のユーザーアカウントに現在定義されているロケールを一覧表示するには:

$ localeLANG=CLANGUAGE=LC_CTYPE=fi_FI.UTF-8LC_NUMERIC="C"LC_TIME="C"LC_COLLATE=fi_FI.UTF-8LC_MONETARY="C"LC_MESSAGES=fi_FI.UTF-8LC_PAPER="C"LC_NAME="C"LC_ADDRESS="C"LC_TELEPHONE="C"LC_MEASUREMENT="C"LC_IDENTIFICATION="C"LC_ALL=

次に、不足しているロケールを生成し、ロケールを再構成して通知します:

$ sudo locale-gen "en_US.UTF-8"Generating locales...  en_US.UTF-8... doneGeneration complete.$ sudo dpkg-reconfigure localesGenerating locales...  en_US.UTF-8... up-to-dateGeneration complete.

今、あなたはもうエラーが表示されません!

私の場合(Ubuntu Server12.04LTS)では、上記の提案は何も機能しませんでした。 最終的に助けたのは、ファイルに入れていました /etc/environment:

LC_ALL=en_US.UTF-8LANG=en_US.UTF-8

何らかの理由でそれが欠落していました。 ロケールやその他のコマンドの出力は、変数が適切に定義されているように見えました。 言い換えれば、すべての基本的なものが宣言されるべき場所で宣言されていることは当然のことではありません。

彼らは発行後に消えるはずです:

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

dpkg-reconfigure パッケージが既にインストールされた後に再構成します。 再構成するパッケージの名前を渡します。 パッケージが最初にインストールされたときと同じように、設定の質問をします。

あなたに以下を追加するだけです .bashrc ファイル(bashを使用していると仮定)

export LC_ALL="en_US.UTF-8"

これはリモートで接続している場合の一般的な問題であるため、解決策はロケールを転送しないことです。 編集 /etc/ssh/ssh_config とコメントアウト SendEnv LANG LC_* ライン。

そのためのコマンドがあります:

sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

それは更新します /etc/default/locale 指定された値を持つ。

変更を適用するには、次の操作を実行します

source /etc/default/locale

12.10に私のために働いたのはこれでした:

apt-get install language-pack-en-base  

これは後だった dpkg-reconfigure locales 結果は出なかった。

Sshセッション(またはX11)を終了して再度ログインすることを忘れないでください。 私は戻ってログインしない限り、これらの提案のすべてが私のために動作しませんでした。...

Ubuntu12.10の場合、ratzsの解決策を除いて上記のどれも機能しませんでした。 これを/etc/bashに追加することをお勧めします。bashrcファイル:

export LC_ALL="en_ZA.UTF-8"export LC_CTYPE="en_ZA.UTF-8"

私は私のローカルマシンがに設定されている奇妙な状態で立ち往生していました es を経由してリモートマシン( vagrant 処理されていない状態でプロビジョニングされていました。 そのため、私はマニュアルを使用しなければなりませんでした export= 唯一の成功を容易にするために dpkg-reconfigure. その後、システムは大丈夫です。

export LC_ALL="en_US.UTF-8"sudo dpkg-reconfigure locales

ロケール変数の重複はリモートシェルでは効果がありません(perl:警告:ロケールの設定failed.)

関連:[ロケールの設定方法は?](perl - How to set locale? - Ask Ubuntu

すべてのユーザーのための容易で、永久的な苦境:locale: Cannot set LC_CTYPE to default locale: No such file or directory locale - Ask Ubuntu

あなたは言う必要があります:あなたのマシン? または、ユーザーログインのみがあり、システム設定を変更できませんか? (ええ、私はこれが本当に古い質問であることを知っています。 そして、間違った答えのupvotesはぞっとするようです)