常に新しいパッケージをインストールしようとすると、次のメッセージが表示されます。
Can't set locale; make sure $LC_* and $LANG are correct!
Perl: warning: Setting locale failed.
Perl: warning: Please check that your locale settings:
LANGUAGE = "en_GB:en",
LC_ALL = (unset),
LC_CTYPE = "en_GB.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_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
私のOSは、フランス語のキーボードで英語を使用するDebian Jessie 8.3(Mate)です。ロケールを入力すると、次のようになります。
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
LANG=en_US.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE=en_GB.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Debianはロケールをソース形式で出荷します。明示的にコンパイルする必要があります。この理由は、コンパイルされたロケールはより多くのディスク領域を使用しますが、ほとんどの人はそれらのいくつかしか使用しないためです。
Rootとしてdpkg-reconfigure locales
を実行し、リストから希望のロケールを選択します(設定にはen_GB
とen_US.UTF-8
が必要です— en_US
とen_GB.UTF-8
を選択することをお勧めします同様に)<OK>
を押します。
または、/etc/locale.gen
を編集し、必要なロケールの行のコメントを外して、ルートとしてlocale-gen
を実行します。
(注:Ubuntuでは動作が異なります:生成するロケールを引数としてlocale-gen
を実行します(例:Sudo locale-gen en_GB en_US en_GB.UTF-8 en_US.UTF-8
)。)
あるいは、Debianにはlocales
の代わりにインストールできるパッケージlocales-all
が用意されています。すべてのロケールが事前に生成されています。欠点は、ディスク領域をより多く使用することです(112MB対16MB)。
私の場合、最高評価のソリューションは役に立たなかったので、これを使用しました:
export LC_ALL="en_US.UTF-8"
Sudo dpkg-reconfigure locales
その後、ログアウトしてログインしましたが、エラーがありませんでした。
これらのコマンドは私の命を救った
# echo "LC_ALL=en_US.UTF-8" >> /etc/environment
# echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
# echo "LANG=en_US.UTF-8" > /etc/locale.conf
# locale-gen en_US.UTF-8
Raspberry Pi(またはその他)でこの問題が発生していて、piにsshするとエラーが発生する場合は、他に2つの解決策があります
1つは編集/etc/ssh/sshd_config
piで行をコメント化
AcceptEnv LANG LC_*
例えば Sudo nano /etc/ssh/sshd_config
その後、sshサーバーを再起動する必要があります
Sudo systemctl restart ssh
もう1つはクライアントマシン上にあります(piではない)edit /etc/ssh/ssh_config
(上記とは異なるパス)と行をコメント化
SendEnv LANG LC_*
パッケージlocales
(またはlocales-all
またはen_GBロケール、Debianのバージョンに応じて)をインストールする必要があります。
このようなエラーが発生しないようにするための回避策:LANG=C
をrootに設定して、noロケールを使用するようにします。