CentOS 6およびロケールエラー


16

CentOS 6をインストールしたばかりで、SSH経由でシステムにリモートでログインするたびに、次のエラーが表示されます。

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)

コマンドラインで「ロケール」と入力すると、次の出力が表示されます。

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
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=

何が問題になりますか?この問題を解決するにはどうすればよいですか?


SendEnv LANG LC_ *引数をコメントアウトするあなたのソリューションは、Mac OS X 10.7.5

回答:


10

sshのサーバーで、環境変数を介してロケールが設定されていますか?CentOS 6のインストールを見ると、サポートされていることがわかる唯一のロケールはen_US.utf8locale -aコマンドを使用して検出された)として識別されます。これが問題になりますか?

私のテストでは、LC_ALL環境変数をに設定するen_US.UTF-8と、サーバーにsshされ、ロケールコマンドの出力はPOSIXこの場合に設定されました。これは、LC_ALLssh'ingの前に変数を設定(つまり設定解除)していない場合と同じです。

私は自分の設定した場合LC_ALLに変数をen_US.utf8en_US.utf-8、私のCentOSの6ボックスにssh'd、ロケールの出力は、ソースボックスで設定されたものと同じでした。

UTFにも大文字を使用していないことに注意してください。


11
ところで、私はこれがMac OS X Lionのssh設定から起こっていることに気付きました。/ etc / ssh_configファイルを編集し、SendEnv LANG LC_ *にコメントしました。それは私の問題を解決しました。
Cem

@Cemヒントをありがとう、これは確かにMac OS X Lionでそれを修正します。
ゾルトTörök

17

このスクリーンショットに従って、[端末設定]> [詳細設定]で[起動時にロケール環境変数を設定する]を無効にすることでこれを解決しました。

ここに画像の説明を入力してください

注:iTerm2を使用している場合、[設定]> [プロファイル]> [ターミナル]で[ロケール変数を自動的に設定]オプションを無効にできます。


1
これは私のために働いた。具体的には、Terminal.appは「LC_CTYPE = UTF-8」を設定していたため、OPによって報告されるエラーが発生しました。代わりに、unset LC_CTYPEまたはexport LC_CTYPE=en_US.UTF-8ログイン後に問題がに修復し。
ターデート

これで解決しました、thx
pjvds

11

簡単な方法:

追加

 LC_CTYPE="en_US.UTF-8"

/etc/sysconfig/i18n


何度も試してみたところ、うまくいきました。
トミー

2

私のために働いたのは、このようなCentOSサーバーにシンボリックリンクを追加することでした:

ln -s /usr/lib/locale/en_US.utf8 /usr/lib/locale/UTF-8

この作業のようなコマンドを実行したら:

export LC_CTYPE=UTF-8

そうしないと、この最後のコマンドは次のエラーで失敗します。

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

さて、さらに簡単な解決策は、サーバーの/ etc / bashrcに次の行を追加することです。

export LC_CTYPE="en_US.utf8"

入力いただきありがとうございます!これは本当にうまくいきました。最終的にその迷惑なコメントを削除することができます...
クリストバル14

2

Solaris XからCentosホストにログインすると、この特定のメッセージが表示されます。

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

問題は2つの設定から発生しています。

  1. デフォルトのシステムssh_configでは、システムにこれらの変数を渡すように依頼します。

ロケール関連の環境変数を送信しますSendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES

  1. ソースホストでは、これらの設定は次のように設定されました。

    SOURCE#LANG = LC_CTYPE = fr_FR.UTF-8 LC_NUMERIC = fr_FR.UTF-8 LC_TIME = fr_FR.UTF-8 LC_COLLATE = fr_FR.UTF-8 LC_MONETARY = fr_FR.UTF-8 LC_MESSAGES = fr.UTF-8 LC_ALL =

しかし、ご覧のとおり、LC_MESSAGESはfr.UTF-8に設定されていますが、これは宛先ホストのオプションではありません。

 DEST#locale -a | grep fr_FR
 fr_FR
 fr_FR@euro
 fr_FR.iso88591
 fr_FR.iso885915@euro
 fr_FR.utf8

この問題は、.bash_profileのソースホストで強制的に解決されました。#export LC_ALL = fr_FR.UTF-8 export LANG = fr_FR.UTF-8

宛先ホストにssh接続からこの変数を取得しないように要求することで解決できました(一般的に、またはユーザーのロケールssh_configファイルを作成することで)


1

ローカルCentos 6.2システムの場合:これは役に立ちませんでした:

localedef -i en_US -f UTF-8 en_US.UTF-8

これは働いた:

localedef --no-archive -i en_US -f UTF-8 en_US.UTF-8

でも削除しlocale-archiveました/usr/lib/locale。これが必要かどうかはわかりません。


1

これは、過去のロケールエラーの修正でした。

以下を実行します:locale-gen

次に、/ etc / locale.genを編集します。以下のコメントが外されていることを確認してください。

en_US.UTF-8 UTF-8  
en_US ISO-8859-1  

generate locale

locale-gen

1

Iterm2、異なっています。
に移動しIterm2 -> Preferences、次にProfilesタブに移動しTerminalて、下からタブを選択します。カテゴリに
移動しEnvironment、マークを解除します。

ロケール変数を自動的に設定する

最後に、新しいセッションを閉じて開始します。

ここに画像の説明を入力してください


0

LC_ALL="en_US.UTF-8"/ etc / sysconifg / i18nにあるか、追加されていることを確認してください

サンプルコンテンツ

LANG="en_GB.UTF-8"
SYSFONT="latarcyrheb-sun16"
LC_ALL="en_US.UTF-8" 

-3

編集する /etc/sysconfig/i18n

変更LANG="us"LANG="en_US"

保存して終了し、ログアウトして再度ログインします。

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