[Perl] perl: warning: Setting locale failed

Sebastien Moretti sebastien.moretti at unil.ch
Lun 8 Mai 09:33:30 CEST 2017


Merci pour vos réponses.


> Non. Tricher avec perl n'est pas une bonne idée.
> 
> Les vraies solutions sont :
> - soit de corriger ton environnement : changer les variables 
> d'environnement indiquées pour qu'elles correspondent à ce qui est 
> disponible sur la machine.
> - soit ajouter des locales sur la machine
> 
> Vu que tu n'a pas d'accès root, tu n'as que la première option.
> 
> Regarde la sortie de /usr/bin/locale sur cette machine et compare avec 
> la liste donnée par "/usr/bin/locale -a".
> 
> Est que tu lances cette commande directement sur un terminal local ou 
> depuis un terminal distant via SSH ?

J'ai les deux cas.
Et je ne suis pas le seul utilisateur du script.
Donc je peux difficilement demander à tous les utilisateurs de faire 
cette correction.

J'espérais faire ça dans le script Perl directement.
Je vais sans doute créer un wrapper autour du script Perl afin que 
celui-ci ait les bonnes locales lors de son exécution.

> Si c'est via SSH, le problème vient probablement du fait que ton client 
> SSH propage sa locale au serveur distant. C'est l'option "SendEnv" (voir 
> man ssh_config) qui permet cela. Sur Ubuntu c'est dans la config par 
> défaut (grep SendEnv /etc/ssh/ssh_config).
> Tu peux alors :
> - soit lancer ta commande SSH avec les variables d'environnement 
> corrigées. Ex : LC_ALL=C.UTF-8 ssh ton-hôte ta-commande
> - soit paramétrer tes connexions SSH à ce serveur pour qu'elles 
> surchargent la config SSH par défaut avec une configuration où les 
> variables d'environnement ne sont pas envoyées. Le préfixe "!" permet 
> d'indiquer de NE PAS envoyer la variable indiquée. Exemple dans ton 
> ~/.ssh/config :
>         Host mon-hôte
>         SendEnv !LANG
> Olivier.
> 
> 
> 
> Le 5 mai 2017 à 13:25, Sebastien Moretti <sebastien.moretti at unil.ch 
> <mailto:sebastien.moretti at unil.ch>> a écrit :
> 
>     Bonjour
> 
>     j'ai ce problème couramment rencontré
>     perl: warning: Setting locale failed.
>     perl: warning: Please check that your locale settings:
>              LANGUAGE = (unset),
>              LC_ALL = (unset),
>              LANG = "en_US.UTF-8"
>          are supported and installed on your system.
>     perl: warning: Falling back to the standard locale ("C").
> 
> 
>     Malheureusement c'est sur un serveur où je ne peux pas faire sudo.
> 
> 
>     Existe-t-il un moyen de supprimer ce warning DANS le script perl
>     lui-même?
> 
>     J'ai déjà tenté
>     - no warnings 'locale'
>     - #!/usr/bin/env LC_ALL=C perl
>     - BEGIN { $ENV{'LC_ALL'}   = 'C'; }
>     sans succès.
> 
> 
>     Merci
> 
>     --
>     Sébastien Moretti
>     _______________________________________________
>     Perl mailing list
>     Perl at mongueurs.net <mailto:Perl at mongueurs.net>
>     http://listes.mongueurs.net/mailman/listinfo/perl
>     <http://listes.mongueurs.net/mailman/listinfo/perl>

--
Sébastien Moretti



Plus d'informations sur la liste de diffusion Perl