854 Stimmen

Wie man eine Locale-Einstellungswarnung von Perl behebt

Wenn ich laufe perl erhalte ich die Warnung:

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").

Wie kann ich es reparieren?

615voto

Allen Bargi Punkte 13996

So lösen Sie das Problem auf Mac OS X v10.7 (Lion) oder Cygwin (Windows 10):

Fügen Sie die folgenden Zeilen in Ihr bashrc o bash_profil Datei auf dem Host-Rechner:

# Setting for the new UTF-8 terminal support in Lion
export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

Wenn Sie Folgendes verwenden Z-Muschel (zsh), Datei bearbeiten zshrc :

# Setting for the new UTF-8 terminal support in Lion
LC_CTYPE=en_US.UTF-8
LC_ALL=en_US.UTF-8

557voto

Greg Bacon Punkte 127209

Ihr Betriebssystem weiß nichts von en_US.UTF-8 .

Sie haben keine bestimmte Plattform genannt, aber ich kann Ihr Problem reproduzieren:

% uname -a
OSF1 hunter2 V5.1 2650 alpha
% perl -e exit
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LC\_ALL = (unset),
    LANG = "en\_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

Ich vermute, dass Sie ssh verwendet haben, um von einem neueren Desktop-Rechner eine Verbindung zu diesem älteren Host herzustellen. Es ist üblich, dass /etc/ssh/sshd_config zu enthalten

AcceptEnv LANG LC_*

die es den Clients ermöglicht, die Werte dieser Umgebungsvariablen in neue Sitzungen zu übertragen.

Die Warnung gibt Ihnen einen Hinweis darauf, wie Sie diese Funktion unterdrücken können, wenn Sie das vollständige Gebietsschema nicht benötigen:

% env LANG=C perl -e exit
%

oder mit Bash:

$ LANG=C perl -e exit
$ 

Für eine dauerhafte Lösung wählen Sie eine der folgenden Möglichkeiten

  1. Setzen Sie auf dem älteren Host die LANG Umgebungsvariable in der Initialisierungsdatei Ihrer Shell.
  2. Ändern Sie Ihre Umgebung auf der Client-Seite, z.B.. statt ssh hunter2 verwenden Sie den Befehl LANG=C ssh hunter2 .
  3. Wenn Sie Administratorrechte haben, verhindern Sie, dass ssh die Umgebungsvariablen sendet, indem Sie die Datei SendEnv LANG LC_* Zeile in der . /etc/ssh/ssh_config Datei. (Dank an diese Antwort . Siehe Fehler 1285 für OpenSSH für mehr).

272voto

Marc Punkte 2646

Wenn Sie ein rootfs mit debootstrap erstellen, müssen Sie die Locales generieren. Sie können dies tun, indem Sie ausführen:

# (optional) enable missing locales
sudo nano /etc/locale.gen

# then regenerate
sudo locale-gen

Dieser Tipp stammt von, https://help.ubuntu.com/community/Xen

190voto

artemn Punkte 1769

Verwendung:

export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8

Es funktioniert für Debian . Ich weiß nicht, warum - aber locale-gen hatte keine Ergebnisse.

Wichtig! Es ist eine vorübergehende Lösung. Sie muss für jede Sitzung ausgeführt werden.

175voto

Paul Tomblin Punkte 172816

Dies bedeutet im Allgemeinen, dass Sie die Gebietsschemata auf Ihrem Linux-System nicht richtig eingerichtet haben.

Unter Debian oder Ubuntu bedeutet das, dass Sie Folgendes tun müssen

$ sudo locale-gen
$ sudo dpkg-reconfigure locales

Siehe auch man locale-gen .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X