サービスを開始または停止するなどの操作を行うたびに、このメッセージが表示されます。
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
を実行して、現在のユーザーアカウントに対して現在定義されているロケールを一覧表示します。
$ 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.
これで、エラーは表示されなくなりました!
私の場合(Ubuntu Server 12.04LTS)、上記で提案されたものは何も機能しませんでした。最終的に助けになったのは、ファイル/etc/environment
に書き込むことです。
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
何らかの理由でそれが欠落していました。ロケールおよびその他のコマンドの出力は、変数が適切に定義されているように見えました。言い換えれば、すべての基本的なものが宣言されるべき場所で宣言されていることを当然のことと考えないでください。
以下を発行すると消えます:
Sudo locale-gen en_US en_US.UTF-8
Sudo 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
を更新します。
12.10で私のために働いたのはこれでした:
apt-get install language-pack-en-base
これは、dpkg-reconfigure locales
が結果を生成しなかった後です。
終了して再度ログインして、SSHセッション(またはX11)を終了することを忘れないでください。これらの提案はすべて、ログインし直さない限り機能しませんでした。
ローカルマシンがes
に設定されているため、(vagrant
を介して)リモートマシンが未処理の状態でプロビジョニングされているという奇妙な状態に陥りました。したがって、export=
を成功させるためにのみ、マニュアルdpkg-reconfigure
を使用する必要がありました。その後、システムは正常です。
export LC_ALL="en_US.UTF-8"
Sudo dpkg-reconfigure locales
Ubuntu 12.10では、ratzsのソリューションを除いて、上記のいずれも機能しませんでした。これを/etc/bash.bashrcファイルに追加することをお勧めします。
export LC_ALL="en_ZA.UTF-8"
export LC_CTYPE="en_ZA.UTF-8"
上記の問題を修正するために 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 に従うことを忘れないでください。
あなたが試すことができます:
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
は国コードです。
人為的エラーが発生する可能性があるため、現在受け入れられている答えは、トラブルシューティング戦略では不十分です。システムを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
で追加/コメント解除したロケールはすべて、警告なしでシステムで使用できます。
KDE環境を使用する場合は、setlocale.sh
の~/.kde/env/
ファイルを確認してください。
$ cat ~/.kde/env/setlocale.sh
export LANG=en_US.UTF-8
export LANGUAGE=en_US:ru:en
「ロケール」設定が無効であるか一致しない場合、インストールしたアプリケーションに対してもSudo dpkg-reconfigure
を実行する必要があります。
システムロケールが正しくセットアップされていない間、vim
をインストールしました。後でシステムロケールが修正されたとき、vim
とnano
が正しく表示されている間に、less
がutf-8文字を誤った記号として誤って表示しているという状況を見ました。ランニング
Sudo dpkg-reconfigure vim
システム設定が修正された後、問題を修正するように見えました。
また、既に述べたのと同じことに気付きました。変更を表示するには、SSHを切断/再接続する必要がある場合があります。
次のテキストを~/.profile
に追加するとうまくいきます:
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
LinodeでUbuntu 16.04 LTS 64ビットサーバーを使用しています。
私が同じ問題を抱えていたとき、これはうまくいきました(ソリューションに基づいて dmanによって提供されます ):
Sudo sh -c "echo -e 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"