Comment résoudre cet avertissement étant invité à chaque fois que j'exécute le code Elixir ou que je saisis iex
?
avertissement: la VM est en cours d’exécution avec le codage de nom natif latin1, ce qui peut entraîner un dysfonctionnement d’Elixir car il s’attend à utf8. Assurez-vous que vos paramètres régionaux sont définis sur UTF-8 (ce qui peut être vérifié en exécutant "paramètres régionaux" dans votre 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
Apparemment non réglé LC_ALL=
était le problème, j'ai vérifié
$ cat /etc/default/locale
LANG="en_US.utf8"
LANGUAGE="en_US:"
en vérifiant que LC_ALL
est manquant, pour y remédier, j'ai exécuté:
$ Sudo update-locale LC_ALL=en_US.UTF-8
cette commande a ajouté LC_ALL
au fichier /etc/default/locale
:
$ cat /etc/default/locale
LANG="en_US.utf8"
LANGUAGE="en_US:"
LC_ALL=en_US.UTF-8
et l'erreur est parti.
J'utilise erlang dans un conteneur Docker et les autres solutions ne l'ont pas coupé. La commande update-locale
peut ne pas être disponible dans un conteneur docker ubuntu. J'ai donc volé du code qui l'installe à partir de 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
Cela se produit lorsque vous effectuez une connexion SSH depuis votre ordinateur portable Mac vers un serveur Linux (y compris un serveur Linux virtuel exécuté sur votre ordinateur portable). SSH transmet les variables d'environnement LANG
et LC_*
du shell local au shell distant, et certaines des valeurs utilisées sur le Mac ne sont pas valides sur le serveur Linux.
Le problème peut être résolu de différentes manières, notamment en installant les paramètres régionaux manquants sur le serveur. Je recommande simplement de désactiver le transfert de l'environnement SSH, soit sur le serveur (supprimez AcceptEnv
dans /etc/ssh/sshd_config
), soit sur l'ordinateur portable (supprimez SendEnv
dans /etc/ssh/ssh_config
).
En savoir plus dans Comment corriger un avertissement de paramètres régionaux de Perl?
Sur centOS 7, les éléments suivants ont fonctionné pour moi:
localedef -c -f UTF-8 -i en_US en_US.UTF-8
export LC_ALL=en_US.UTF-8
Devrait fonctionner pour la plupart, sinon toutes les distributions RHEL. À votre santé!
Pour moi, définir les paramètres régionaux dans mon script d'initialisation /etc/init/my_start_script.conf
a fait l'affaire
env LC_ALL=en_US.UTF-8
export LC_ALL