web-dev-qa-db-ja.com

CentOS 6とロケールエラー

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

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

コマンドラインで「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
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=

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

17
Cem

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

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

私のLC_ALL変数をen_US.utf8またはen_US.utf-8に設定し、CentOS 6ボックスにsshすると、ロケールの出力はソースボックスで設定されたものと同じでした。

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

10
mdpc

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

enter image description here

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

17
Nils

簡単な方法:

追加

 LC_CTYPE="en_US.UTF-8"

/etc/sysconfig/i18n

12
gpupo

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では、これらの変数を渡すようにシステムに要求しています。

ロケール関連の環境変数を送信します。SendEnvLANG 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

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

2
Kaalahaan

私にとってうまくいったのは、次のように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"
2
gnrfan

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

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

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

enter image description here

1
crsuarezf

ローカル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
BobM

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

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

次に、/ etc/locale.genを編集します。次のコメントを外してください:

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

generate locale

locale-gen
1
Thomas Vincent

LC_ALL="en_US.UTF-8"が/ etc/sysconifg/i18nにあるか、追加されている

コンテンツの例

LANG="en_GB.UTF-8"
SYSFONT="latarcyrheb-Sun16"
LC_ALL="en_US.UTF-8" 
0
mayod