2015-09-04 9 views
8

Come risolvere questo avviso che viene richiesto ogni volta che eseguo codice Elixir o immettere iex?la macchina virtuale è in esecuzione con la codifica del nome nativo di latin1 che può causare malfunzionamento di Elixir in quanto si aspetta utf8

avviso: la macchina virtuale è in esecuzione con la codifica del nome nativo di latin1 che potrebbe causare il malfunzionamento di Elixir in attesa di utf8. Assicurati che il tuo locale è impostato su UTF-8 (che può essere verificata eseguendo "locale" nella shell)

$ 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 

risposta

6

A quanto pare non impostato LC_ALL= era il problema, ho controllato

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

garantire LC_ALL manca, per risolvere il problema, ho eseguito:

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

° è il comando aggiunto LC_ALL a /etc/default/locale di file:

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

e l'errore è scomparso.

+2

La parte interessante è qui: [erl_sys_common_misc.c] (https://github.com/erlang/otp/blob/a2670f0822fc6729df956c8ec8c381340ff0a5fb/erts/emulator/sys/common/erl_sys_common_misc.c) –

+0

@PeterBagyinszki grazie per riferimento! –

+0

Non funziona per me su Ubuntu 14.04 ... – Informatom

0

Per me l'impostazione della localizzazione nel mio script di init /etc/init/my_start_script.conf ha fatto il trucco

env LC_ALL=en_US.UTF-8 
export LC_ALL 
2

sto usando Erlang all'interno di un contenitore finestra mobile e le altre soluzioni non tagliarlo. Il comando update-locale potrebbe non essere disponibile all'interno di un contenitore ubuntu finestra mobile, quindi ho rubato del codice che lo installa da 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

Questo accade quando si SSH da vostro computer portatile Mac a un server Linux (tra cui un server virtuale Linux in esecuzione sul vostro computer portatile). SSH inoltra le variabili di ambiente LANG e LC_* dalla shell locale alla shell remota e alcuni valori utilizzati su Mac non sono validi sul server Linux.

Il problema può essere risolto in vari modi, inclusa l'installazione delle localizzazioni mancanti sul server. Raccomando semplicemente di disabilitare l'inoltro dell'ambiente SSH, sul server (rimuovere AcceptEnv in /etc/ssh/sshd_config) o sul laptop (rimuovere SendEnv in /etc/ssh/ssh_config).

Per saperne di più in How to fix a locale setting warning from Perl?

Problemi correlati