2015-09-04 7 views
8

Jak rozwiązać to ostrzeżenie przy każdym uruchomieniu kodu Elixir lub wpisać iex?Maszyna wirtualna działa z natywnym kodowaniem nazwy latin1, co może spowodować nieprawidłowe działanie urządzenia Elixir, ponieważ oczekuje on utf8

ostrzeżenie: maszyna wirtualna działa z natywnym kodowaniem nazwy łacińskiego1, co może spowodować nieprawidłowe działanie eliksiru, ponieważ oczekuje on utf8. Prosimy upewnić się, locale jest ustawione na UTF-8 (które mogą być zweryfikowane przez uruchomienie "Locale" w łupinach)

$ 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 

Odpowiedz

6

Widocznie rozbrojony LC_ALL= była kwestia, sprawdziłem

$ cat /etc/default/locale 
LANG="en_US.utf8" 
LANGUAGE="en_US:" 

zapewnieniu LC_ALL brakuje, go naprawić, I wykonany:

$ sudo update-locale LC_ALL=en_US.UTF-8 

th jest komenda dodaje LC_ALL do /etc/default/locale pliku:

$ cat /etc/default/locale 
LANG="en_US.utf8" 
LANGUAGE="en_US:" 
LC_ALL=en_US.UTF-8 

i błędów nie ma.

+2

Interesującą częścią jest tutaj: [erl_sys_common_misc.c] (https://github.com/erlang/otp/blob/a2670f0822fc6729df956c8ec8c381340ff0a5fb/erts/emulator/sys/common/erl_sys_common_misc.c) –

+0

@PeterBagyinszki dziękuję za referencje! –

+0

Nie działa dla mnie na Ubuntu 14.04 ... – Informatom

0

Dla mnie ustawienie locale w moim skrypcie /etc/init/my_start_script.conf wystarczyły

env LC_ALL=en_US.UTF-8 
export LC_ALL 
2

Używam Erlang wewnątrz kontenera Döcker i inne rozwiązania nie wyciąć. Polecenie update-locale może nie być dostępne w kontenerze Ubuntu w doku, więc ukradłem kod, który instaluje go z poziomu 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 
2

Dzieje się tak, gdy SSH z komputera Mac do serwera Linux (w tym wirtualny serwer Linux uruchomiony na swoim laptopie). SSH przekazuje zmienne środowiskowe LANG i LC_* z lokalnej powłoki do zdalnej powłoki, a niektóre wartości używane na komputerze Mac nie są poprawne na serwerze Linux.

Problem można naprawić na różne sposoby, w tym instalując brakujące ustawienia lokalne na serwerze. Zalecam po prostu wyłączenie przekazywania środowiska SSH na serwerze (usuń AcceptEnv w /etc/ssh/sshd_config) lub na laptopie (usuń SendEnv w /etc/ssh/ssh_config).

Czytaj więcej w How to fix a locale setting warning from Perl?

Powiązane problemy