web-dev-qa-db-ja.com

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

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

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   

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

505
HackToHell

最初にlocaleを実行して、現在のユーザーアカウントに対して現在定義されているロケールを一覧表示します。

$ locale
LANG=C
LANGUAGE=
LC_CTYPE=fi_FI.UTF-8
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE=fi_FI.UTF-8
LC_MONETARY="C"
LC_MESSAGES=fi_FI.UTF-8
LC_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... done
Generation complete.

$ Sudo dpkg-reconfigure locales
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.

これで、エラーは表示されなくなりました!

507

私の場合(Ubuntu Server 12.04LTS)、上記で提案されたものは何も機能しませんでした。最終的に助けになったのは、ファイル/etc/environmentに書き込むことです。

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

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

365
Marcin

以下を発行すると消えます:

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

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

148
Rinzwind

以下を.bashrcファイルに追加するだけです(bashを使用している場合)

export LC_ALL="en_US.UTF-8"
118
ratz

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

94
user249697

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

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

指定された値で/etc/default/localeを更新します。

72
sgtpep

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

apt-get install language-pack-en-base  

これは、dpkg-reconfigure localesが結果を生成しなかった後です。

32

終了して再度ログインして、SSHセッション(またはX11)を終了することを忘れないでください。これらの提案はすべて、ログインし直さない限り機能しませんでした。

18

ローカルマシンがesに設定されているため、(vagrantを介して)リモートマシンが未処理の状態でプロビジョニングされているという奇妙な状態に陥りました。したがって、export=を成功させるためにのみ、マニュアルdpkg-reconfigureを使用する必要がありました。その後、システムは正常です。

export LC_ALL="en_US.UTF-8"
Sudo dpkg-reconfigure locales
11
Charney Kaye

Ubuntu 12.10では、ratzsのソリューションを除いて、上記のいずれも機能しませんでした。これを/etc/bash.bashrcファイルに追加することをお勧めします。

export LC_ALL="en_ZA.UTF-8"
export LC_CTYPE="en_ZA.UTF-8"
11
Lovemore Nalube

上記の問題を修正するために bash script を作成しました。上記の回答は便利ですが、シェル変数の値をエクスポートするだけでロケール変数を設定すると、セッションでのみ機能します。 .bash_profileファイルのロケール変数をエクスポートすることにより、この問題を永続的に解決しました。 /etc/profileの代わりに.bash_profileファイルを使用することもできます。

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

source the .bash_profileを忘れずに、簡単なセットアップで script に従うことを忘れないでください。

9
Ajeet Khan

あなたが試すことができます:

export LANGUAGE=ru_RU.UTF-8
export LC_CTYPE=ru_RU.UTF-8
export LC_NUMERIC=ru_RU.UTF-8
export LC_TIME=ru_RU.UTF-8
export LC_COLLATE=ru_RU.UTF-8
export LC_MONETARY=ru_RU.UTF-8
export LC_MESSAGES=ru_RU.UTF-8
export LC_PAPER=ru_RU.UTF-8
export LC_NAME=ru_RU.UTF-8
export LC_ADDRESS=ru_RU.UTF-8
export LC_TELEPHONE=ru_RU.UTF-8
export LC_MEASUREMENT=ru_RU.UTF-8
export LC_IDENTIFICATION=ru_RU.UTF-8
export LC_ALL=ru_RU.UTF-8

ここで、ru_RUは国コードです。

8
Koss

人為的エラーが発生する可能性があるため、現在受け入れられている答えは、トラブルシューティング戦略では不十分です。システムをen_USに設定しますが、Raspberry Pi 3bの場合はスレッドで here のようにen_GBが有効になっています_/etc/locale.genがあります。 /etc/locale.genで有効なロケールをall有効にする必要があります。

en_GB.UTF-8 UTF-8/etc/locale.genでのみ有効にしました。他のコマンドが実行されるため、en_US.UTF-8 UTF-8のみを有効にする必要があります。だから私はGBにコメントし、コメントを外した米国にコメントしました。

masi@raspberrypi:~ $ Sudo vim /etc/locale.gen

masi@raspberrypi:~ $ Sudo locale-gen 
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.

masi@raspberrypi:~ $ Sudo a2enmod rewrite && a2enmod headers && a2enmod ssl
Module rewrite already enabled
Module headers already enabled
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Module socache_shmcb already enabled
Module ssl already enabled

今、私はコマンドでこれらのロケールの間違いを取得しません。

システム:Raspbian Jessie
ハードウェア:Raspberry Pi 3b

Debian Wikiの場合 で述べたように、/etc/locale.genを編集してすべてのロケールを追加できます(またはコメントを外し、コメントとして使用したロケールを除くすべてのロケールのリストがありました)システムのサポートを希望します。次に、実行する

Sudo dpkg-reconfigure locales

システムのロケールを更新します。これで、/etc/locale.genで追加/コメント解除したロケールはすべて、警告なしでシステムで使用できます。

6
msrd0

KDE環境を使用する場合は、setlocale.sh~/.kde/env/ファイルを確認してください。

$ cat ~/.kde/env/setlocale.sh 
export LANG=en_US.UTF-8
export LANGUAGE=en_US:ru:en
3
MaximKostrikin
  1. 「ロケール」設定が無効であるか一致しない場合、インストールしたアプリケーションに対してもSudo dpkg-reconfigureを実行する必要があります。

    システムロケールが正しくセットアップされていない間、vimをインストールしました。後でシステムロケールが修正されたとき、vimnanoが正しく表示されている間に、lessがutf-8文字を誤った記号として誤って表示しているという状況を見ました。ランニング

    Sudo dpkg-reconfigure vim
    

    システム設定が修正された後、問題を修正するように見えました。

  2. また、既に述べたのと同じことに気付きました。変更を表示するには、SSHを切断/再接続する必要がある場合があります。

2
ajaaskel

次のテキストを~/.profileに追加するとうまくいきます:

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

LinodeでUbuntu 16.04 LTS 64ビットサーバーを使用しています。

2
Jingguo Yao

私が同じ問題を抱えていたとき、これはうまくいきました(ソリューションに基づいて dmanによって提供されます ):

Sudo sh -c "echo -e 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"
2
pythonhunter