Apt-getを実行すると、エラーlocale: Cannot set LC_CTYPE to default locale: No such file or directory
が表示されます。このエラーを修正するにはどうすればよいですか?
Mac OSXを実行しているボックスから接続しています。
OS Xに間違いなく何か問題があります(Lionのみの可能性があります)
OSXがロケール環境を正しく設定していません。また、OS Xは、Linuxとは異なるロケールの組み合わせ構文でUTF-8文字セットを呼び出します。
Googleには多数の「修正」がありますが、それらのほとんどは実際には機能しないか、問題の一部にすぎません。これは、同じまたは類似のエラーを作成する別の問題を対象としているためです。
最も合理的な方法は、OSXクライアントでローカル環境を修正することだと思います。 OSXクライアントでlocale
コマンドを実行すると、不完全な環境が表示されます。言語が設定されていません。
osx-client:~$ locale
LANG= << EMPTY!
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL= << EMPTY!
したがって、localマシンの~/.bash_profile
ファイルに、追加するだけです。
export LANG="en_US"
export LANGUAGE=$LANG
export LC_ALL=$LANG
もちろん、en_US
を希望の言語に置き換えることもできますが、そのロケールもサーバーにインストールしてください(たとえば、Debianでdpkg-reconfigure locales
を使用)。ターミナルを閉じてから再度開くことを忘れないでください。
ただし、しないでください.UTF
バリアントを使用してください。それらはサーバー上またはローカルでのみ機能します。 OS XとLinuxサーバーでは、language.charset構文を組み合わせたUTF-8の名前が異なります。たとえば、en_US.utf8
を使用すると、リモートで「正常に」機能しているときにローカルでエラーが発生します。en_US.utf-8
を使用すると、ローカルで機能しますが、サーバーでエラーが発生します。プレーンランゲージの定義を使用するだけです。とにかく、文字セットはUTF-8になるはずです。
サーバーでlocale
を再度実行するだけで機能するかどうかをテストできます。上部に恐ろしいメッセージが表示されている場合は、機能しません。ローカルで混乱した場合、新しいターミナルウィンドウを開くとすぐにエラーが表示されます。
それでも機能しない場合は、サーバー上で選択したロケールが欠落している可能性があります。 「en_US」はほとんど間違いありませんが、別のものが必要な場合があります。ロケールのインストール方法は、サーバーのディストリビューションによって異なります。
dpkg-reconfigure locales
を呼び出してから、ロケールを選択します。Sshでこのエラーが表示されているときにMacOS Xを実行している場合、解決は簡単です。
Sudo nano/etc/ssh_config次の行をコメントアウトします: "SendEnv LANG LC_ *"
Ubuntuでdpkg-reconfigure locales
を実行し、選択範囲の少なくとも1つが選択されていることを確認します。何を選ぶべきかわからない場合は、en_US.UTF-8
をお勧めします。
システムからSSH経由で接続している場合は、接続するクライアントシステムで使用されるロケールが生成されていることを確認する必要があります。必要に応じて、生成するロケールをいくつでも選択できます。
あなたが答えで述べたように、LC *変数を送信または受け入れるためにSSHを防ぐことを確実に選択できます。
Sshクライアントからこれを無効にします。
ssh_config: SendEnv LANG LC_*
SSHサーバーでは、これを削除することで変数の受け入れをブロックできます。
sshd_config:AcceptEnv LANG LC_*