[Perl] perl: warning: Setting locale failed

Olivier Mengué olivier.mengue at gmail.com
Ven 5 Mai 18:00:03 CEST 2017


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 ?

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> 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
> http://listes.mongueurs.net/mailman/listinfo/perl
>
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://listes.mongueurs.net/mailman/private/perl/attachments/20170505/ff34de5d/attachment.html>


Plus d'informations sur la liste de diffusion Perl