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


506

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

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   

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




すべてのユーザー向けの簡単で永続的な修正:askubuntu.com/questions/881742/…–
Galvani

回答:


513

最初に実行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.

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


220
私のために働いていませんでした
Umair 14

4
これは私にとって多くのシステムでうまくいきました。新しくインストールされたシステムでこの問題を回避する方法はありますか?
ブリークリストファーオックスリー

13
@UmairAyubには、不明なロケールが複数ある可能性がありますので、これを試してください。完了各定義のロケールを生成します
Ivan Buttinoni

3
ログアウトとログインが役立つ場合があります
-SMMousavi

4
@Umairこの問題には、ヒューマンエラーのリスクが高くなります。お使いのシステムはen_GBデフォルトでに設定されていますが、それをに設定していますen_US。で手動でコメントen_GBを付けてコメント解除する必要en_USがあり/etc/locale.genます。ハードウェアRaspberry Pi 3bおよびシステムRaspbian Jessieの回答askubuntu.com/a/790373/25388を参照してください。
レオレオポルトヘルツ

366

私の場合(Ubuntu Server 12.04LTS)、上記で提案されたものは何も動作しませんでした。最終的に助けたのはファイルに置くことでした/etc/environment

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

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


115
はい、おそらく更新されたバージョンが原因で、これ以外は機能しませんでした。しかし、私はむしろこれを入れたい/etc/default/localeです。
ネイブド

27
更新され/etc/default/locale、警告はありません。ありがとう
-ohho

7
うん、他の人は私のために動作しませんでした。これはやった。これは、これを無人で更新するために使用した1行のライナーです。 sudo sh -c "echo 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"
dman 14年

12
@ user163207ソリューションは(上書きではなく)追加されるため間違っています。推奨されるファイルではなく、echoバックスラッシュエスケープの解釈を有効にして実行する必要があります。これは、あなたと同じであるが、前述の固定と:sh -c "echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale"
glarrain

13
ログインして再ログインするのを忘れないでください!
SMMousavi

149

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

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

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


9
1年前に問題が解決したことを喜んでくれました;)
Rinzwind

1
このロケールはデフォルトで生成されるべきではありませんか?私が意味するenen_AUen_CAen_GBデフォルトで存在しているではありませんかen_US
ダニエルセロディオ

@Rinzwindお疲れ様でした!謝罪します。私は質問をもっとうまく表現すべきでした。私が尋ねたいのは、なぜ新しいロケールを生成した後にロケールパッケージを再構成する必要があるのですか?ロケールがなくても動作するように思えdpkg-reconfigureます。
ビクター

DockerコンテナでUbuntu 14.04を使用しているため、何も設定されていません。Djangoにmakemessageはこれが必要です。これは完璧に機能しました!ありがとう。
ジャスティン14

1
ここでは、raspbianが範囲外であることを認識していますLC_ALLが、適切に設定する前にログアウトしてログインする必要があることに言及したいと思いました。
MatrixManAtYrService

119

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

export LC_ALL="en_US.UTF-8"

2
この甘い修正は、Amazon-EC2イメージで機能しました(デフォルトのRHEL AMIを実行していました)ありがとうございます!:)
ギデオン

これは私のデジタルオーシャンのUbuntu 12.04イメージで私のために働いた。
イナン

2
これで問題が解決しました。私は質問をしなければなりません:LC_ALLは、なぜ他の回答が上記のようにlocale-genコマンドによって設定されなかったのですか?
alexserver

奇妙なことに、上記のすべての解決策はうまくいきませんでしたが、これはうまくいきました!エクスポート後、LC_ALL最終的に使用できますsudo dpkg-reconfigure locales
-sobi3ch

最後に多くのトリックを試した後、これは私にとってkubuntu 14.04.3 ltsで機能するものです。ありがとう!
ヨナ

94

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


6
私は他の答えを試していましたが、あなたの答えを見るまでリモートで接続していたのを忘れていました。sshサーバーとクライアントの異なるロケールが問題の原因でした。
-Hieu

2
OSX(Ubuntuのに接続している)上では、ATの/etc/ssh_config
ミシェル・デ・マーレ

これを行うためのワンライナー:(sed -e '/SendEnv/ s/^#*/#/' -i /etc/ssh/ssh_configサーバーのプロビジョニングに便利)
アルビン

ロケールマシンでLC_ALLを設定することはできませんでしたが、リモートサーバーの問題を修正しました。
アレクサンダーシュレンチャック16

1
おそらく、リモートではなくローカルマシンでファイルを編集する必要があることに注意してください。
Clashsoft

72

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

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

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


4
これは合法です!シェルをサインアウト/リロードすることを忘れないでください。さもないと、変更が表示されません。ロケールを生成および再構成するための承認済みの回答をチェックアウトすることを忘れないでください。
エリックツィコビッチ

1
実行してlocaleも、utf値は表示されません。
セリン

@Cerin:Myybe、への呼び出しがlocale-genありません。前に、1つを行う必要がありますapt-get install locales
-koppor

1
/root/.profileで無効になっているため、Ubuntu 16.04のルートシェルのLANGは変更されません。
ウィレム

32

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

apt-get install language-pack-en-base  

これはdpkg-reconfigure locales結果を出さなかった後です。


2
これが最良の答えです。私のロケールが正しくセットアップされていたわけではありませんが、実際には存在していませんでした。これはOPの問題にも似ていると思います(ロケール正しく設定されていれば、「そのようなファイルやディレクトリはありません」は明確です!)。
ブレークスルー

1
Ubuntu 12.04でapt-getを使用するたびにOPの問題が発生していました。これにより、ファイルを編集せずに完全に解決しました。
ディープエンド14年

「language-pack-en-baseはすでに最新バージョンです。」
-karlingen

ログアウトとログインが役立つ場合があります
-SMMousavi

chrootdebianの下のUbuntu で働いていました。ありがとう:)
Wyatt8740

18

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


2
このコメントは、より多くの賛成票を得るか、少なくともすべての回答で事実を強調する必要があります。
ni8mr 16

11

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

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

上記のすべてのソリューションの。これは私のために働いた唯一のものです。
ジョニーQ

11

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

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

ベスト!dpkg-recofigureモジバケを表示するため。
オリエント

9

上記の問題を修正するためにbashスクリプトを作成しました。上記の回答は便利ですが、シェル変数の値をエクスポートするだけでロケール変数を設定できるのは、セッションに対してのみ機能します。.bash_profileファイルのロケール変数をエクスポートすることにより、この問題を永続的に解決しました。の/etc/profile代わりにfileを使用することもできます.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、簡単なセットアップでスクリプト.bash_profile従ってください。


8

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

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国コードはどこですか。


7

人為的エラーが発生する可能性があるため、現在受け入れられている答えは、トラブルシューティング戦略では不十分です。あなたのセットアップお使いのシステムをするen_USが、あなたがしているen_GBで有効になって/etc/locale.gen私がスレッドに持っていたように、ここでラズベリーパイ3bのために。で使用するすべてのロケールを有効にする必要があります/etc/locale.gen

en_GB.UTF-8 UTF-8のみ有効にしていました/etc/locale.genen_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


6

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

sudo dpkg-reconfigure locales

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


3

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

$ cat ~/.kde/env/setlocale.sh 
export LANG=en_US.UTF-8
export LANGUAGE=en_US:ru:en

これは私のお尻を救った....ありがとう!このロケールが設定されている場所の数は信じられません...そして、KDEは2つの異なるロケール(場所、お金などのis_IS、存在しないis_ENの言語のen_EN)を混合することで、世界をどのように台無しにしていますかロケール)!Grmpfh。
StFS

2
  1. sudo dpkg-reconfigure「ロケール」設定が無効であるか、一致しない場合、インストールしたアプリケーションに対しても実行する必要があります。

    システムロケールが正しくセットアップされていない間、インストールしましたvim。その後、システムのロケールが固定されたとき、私は、状況を見vimながら、誤って変な記号をUTF-8文字を見せていたnanoし、lessそれらを正しく示していたが。ランニング

    sudo dpkg-reconfigure vim
    

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

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


2

次のテキストを追加~/.profileしてください。

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

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


2

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

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

URLをコメントに追加する方法がよくわかりませんでした。@EliahKagan
pythonhunter

1
問題ありません。コメントの横にある日付/タイムスタンプは、コメントに直接リンクするものです。...そのため、glarrainのコメント(の>代わりに呼び出す>>)がdmanの返信のように見えることに気付きました。私は実際にどちらの方法が正しいか最善かを知りませんが、これについての洞察があれば、より多くの情報でこの答えを広げることができます。(しかし、する必要はありません。)
エリアケイガン14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.