Elixirコードを実行するかiex
を入力するたびにプロンプトが表示されるこの警告を解決するにはどうすればよいですか?
警告:VMは、latin1のネイティブ名エンコーディングで実行されているため、utf8を想定しているため、Elixirが誤動作する可能性があります。ロケールが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.utf8
LANGUAGE=en_US:
LC_CTYPE=UTF-8
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04 LTS
Release: 14.04
Codename: trusty
どうやら設定解除LC_ALL=
が問題でした、チェックしました
$ cat /etc/default/locale
LANG="en_US.utf8"
LANGUAGE="en_US:"
確保LC_ALL
がありません修正するために、実行しました:
$ Sudo update-locale LC_ALL=en_US.UTF-8
このコマンドが追加されましたLC_ALL
から/etc/default/locale
ファイル:
$ cat /etc/default/locale
LANG="en_US.utf8"
LANGUAGE="en_US:"
LC_ALL=en_US.UTF-8
エラーはなくなりました。
私はDockerコンテナー内でerlangを使用していますが、他のソリューションではそれがうまくいきませんでした。コマンド update-locale
はdocker ubuntuコンテナー内では使用できない可能性があるため、それをインストールするコードを https://hub.docker.com/r/voidlock/erlang/~/dockerfile/ からインストールしました。
apt-get update && apt-get install -y --no-install-recommends locales
export LANG=en_US.UTF-8 \
&& echo $LANG UTF-8 > /etc/locale.gen \
&& locale-gen \
&& update-locale LANG=$LANG
CentOS 7では、以下がうまくいきました:
localedef -c -f UTF-8 -i en_US en_US.UTF-8
export LC_ALL=en_US.UTF-8
すべてではないにしても、ほとんどのRHELディストリビューションで機能するはずです。乾杯!
これは、MacラップトップからLinuxサーバー(ラップトップで実行されている仮想Linuxサーバーを含む)にSSH接続すると発生します。 SSHはLANG
およびLC_*
環境変数をローカルシェルからリモートシェルに転送し、Macで使用されている値の一部はLinuxサーバーでは無効です。
この問題は、不足しているロケールをサーバーにインストールするなど、さまざまな方法で修正できます。サーバー(/etc/ssh/sshd_config
のAcceptEnv
を削除する)またはラップトップ(/etc/ssh/ssh_config
のSendEnv
を削除する)で、SSH環境の転送を無効にすることをお勧めします。
Dockerイメージを使用しているときにこれが発生しました。次の行をDockerfile
に追加すると、これが解決します:
ENV LANG=C.UTF-8
私の場合、initスクリプトでロケールを設定します/etc/init/my_start_script.conf
トリックした
env LC_ALL=en_US.UTF-8
export LC_ALL