LC_CTYPEをデフォルトのロケールに設定できません:そのようなファイルまたはディレクトリはありません


54

私はこれについて正確な質問を持っていますが、解決策はありません。試したがうまくいかない

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

$ locale
locale: Cannot set LC_CTYPE 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=
LC_CTYPE=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=

$ locale -a
locale: Cannot set LC_CTYPE to default locale: No such file or directory
C
C.UTF-8
en_US.utf8
POSIX

これは、en_US.UTF-8とen_US.utf8の不一致が原因ですか?

直し方?


回答:


53

ターミナルを開き、次のコマンドを実行します。

export LC_ALL="en_US.UTF-8"

これは機能しますが、なぜですか?
ゆうJiaao

16
変数は、セッション終了時に破壊されるので、これは何も解決しません...
エティエンヌ・ゴーティエ


短い言葉で素晴らしいソリューション。笑!
レッドボブ

1
このVARをエクスポートするときに私が取得:-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
nnyby

36

この同じ問題(間違っているLC_CTYPE = UTF-8)は、MacからLinuxボックスにsshでログインし、端末が環境変数を自動的に設定するときに発生する可能性があります。そのためのチェックボックスがあります。チェックを外すと、準備完了です。iTermでは、プロファイル-> [端末]タブにあります。


2
iTermでチェックボックス「設定>プロファイル>デフォルト>ターミナル>環境>ロケール変数を自動的に設定」を無効にします
ecerulm

1
-1:これは効果的かもしれませんが、非常に侵襲的です。また、接続するすべてのホストの動作だけでなく、ローカル端末の動作にも影響を及ぼす可能性があります。調査結果は真実ですが、ssh_configを使用して、問題があることがわかっているホストにLC_ *を送信しないようにすることをお勧めします。
マックスリード

3
独自の回答を追加して、これがローカル端末の動作に影響を与える可能性がある理由、およびLC_ *を送信しないようにssh_configに指示する方法についてさらに説明してください。あなたは本当の説明なしで私の答えを-1するだけだからです。
-raarts

ターミナルを使用してMacOSから接続している場合は、[ターミナル設定]> [詳細設定]に移動し、[起動時にロケール環境変数を設定する]をオフにします。
javaxian

発生しているように見えるのは、ローカルシステムにいくつかのロケールがインストールされているのに、このロケールがインストールされていない別のシステムにsshすることです。ターミナルクライアントは、リモートシステムにロケールを通知し、リモートシステムは要求された言語での応答に失敗します。これを修正するには、2つの方法があります。変更するか、要求されたものを変更するか、要求されたロケールをリモートシステムに追加します(ルートアクセスが必要です)。
1

27

同様の問題があり、/etc/default/localeファイルに以下の行を追加しました。

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

これをこの投稿から入手しました:ロケールの問題を修正するにはどうすればよいですか?


3
そうすると、非常に厄介なロケール構成になってしまいます。/etc/environmentUbuntuでロケールを設定するためのものではありません。/etc/default/localeです。また、デスクトップの場合、LC_ALL永続的に設定しないでください。これにより、デスクトップ上の言語/ロケール設定を制御するためのUI(言語サポートなど)が役に立たなくなります。
グンナルハルマルソン

これは実際に機能します。再起動後。
TranslucentCloud

ログアウトとログインは、それが動作するはずです
Sand1512


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

私は問題のような問題のないほぼクリーンなVultrインスタンスを実行し、環境変数を調べ、すべてが正常に見えました。しかし、sudo dpkg-reconfigure locales行方不明だったに違いない何かをしました。これで私のsshセッションは大丈夫です。ありがとう!
ジョナス

6

localeコマンドからの出力は、環境に次の誤った行があることを示しています。

LC_CTYPE="UTF-8"

(「UTF-8」は有効なロケール名ではありません。)

通常はから取得され/etc/default/localeます。その行がある場合は削除し、再ログインしてください。

そこから来ていない場合は、シェル構成から、またはSSHを介してリモートでログインしている場合は、クライアントマシンの構成から来ることができます。


LC_CTYPEをutf8に変更しますか?
MAVE

@ルーカス:いいえ、それは同じくらい悪いでしょう。LANGが設定されているため、LC_CTYPEで始まる行全体を単純に削除できます。
グンナルHjalmarsson

LC_TYPEを設定する場合は、「en_US.UTF-8」にも設定する必要があります。

クライアントマシンの構成に由来する場合は、サーバーでロケールを追加できますdpkg-reconfigure locales
ポールルージュ

5

このコマンドは私の命を救った

sudo echo "LC_ALL=en_US.UTF-8" >> /etc/environment
sudo echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
sudo echo "LANG=en_US.UTF-8" > /etc/locale.conf
sudo locale-gen en_US.UTF-8

5
ファイルはの前に開かれsudoます。すでにルートになっていない限り、リダイレクトは機能しません。
マーティンソーントン

3

/ etc / default / localeファイルには、追加の(ただし不要な)行を含めることができます。ファイルの例は次のようになります。

#  File generated by update-locale
LANG=en_US.UTF-8
LANGUAGE="en_IN:en

ロケールを整理して正常に生成および再構成するには、このファイルから次の行を除くすべての行を削除またはコメントアウトします。

LANG=en_US.UTF-8

ファイルは最終的に次のようになります。

#  File generated by update-locale
LANG=en_US.UTF-8
# LANGUAGE="en_IN:en

この後dpkg-reconfigure locales、ロケールを選択するよう求められたら、を実行してen_US.UTF-8を選択します。これで準備完了です。Generation complete.プロセスが完了すると、メッセージが表示されます。


0

私はホームディレクトリのドットファイルを新しいマシンに移行するときに自分でこれを引き起こすことLC_ができましたが、ファイルを検索するためではなくしばらくの間原因を特定できませんでしたLOC

~/.bashrc私がコピーされたファイルには、次のように持っていました:

export LOCPATH=/var/guix/profiles/per-user/root/guix-profile/lib/locale

(ここでの特定の値は、古いマシンでのGNU Guixの以前の実験のためでしたが、関連する事実は、単に環境変数が現在無効なパスに設定されたことです。)

これにより、さまざまなプログラムの実行時に次のエラーが発生しました。

Warning: locale not supported by C library, locale unchanged

実行時のこれらのエラーlocale

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

行を削除(またはコメントアウト)LOCPATHすると、問題が解決しました。


0

次を実行するだけです:

sudo apt-get upgrade

すべてのロケートを生成し、デフォルトをUSに設定します。

export LC_ALL="en_US.UTF-8"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.