Wie behebe ich mein Gebietsschema Problem?

453

Ich erhalte diese Nachricht jedes Mal, wenn ich etwas wie das Starten oder Stoppen eines Dienstes mache.

perl: warning: Setting locale failed.   
perl: warning: Please check that your locale settings:   
        LANGUAGE = "en_US:en",   
        LC_ALL = (unset),   
        LC_MESSAGES = "en_US.UTF-8",   
        LANG = "en_US.UTF-8"   
    are supported and installed on your system.   
perl: warning: Falling back to the standard locale ("C").   
locale: Cannot set LC_CTYPE to default locale: No such file or directory   
locale: Cannot set LC_MESSAGES to default locale: No such file or directory   
locale: Cannot set LC_ALL to default locale: No such file or directory   
(Reading database ... 21173 files and directories currently installed.)  
Removing bind9 ...  
 * Stopping domain name service... bind9                                        [ OK ]
Processing triggers for man-db ...   
locale: Cannot set LC_CTYPE to default locale: No such file or directory   
locale: Cannot set LC_MESSAGES to default locale: No such file or directory   
locale: Cannot set LC_ALL to default locale: No such file or directory   

Wie behebe ich diesen Fehler?

    
HackToHell 11.07.2012, 16:08
quelle

19 Antworten

464

Führen Sie zuerst locale aus, um die aktuell für das aktuelle Benutzerkonto definierten Gebietsschemas aufzulisten:

$ locale
LANG=C
LANGUAGE=
LC_CTYPE=fi_FI.UTF-8
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE=fi_FI.UTF-8
LC_MONETARY="C"
LC_MESSAGES=fi_FI.UTF-8
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=

Generieren Sie anschließend das fehlende Gebietsschema und konfigurieren Sie die Gebietsschemata neu, um auf sie aufmerksam zu machen:

$ sudo locale-gen "en_US.UTF-8"
Generating locales...
  en_US.UTF-8... done
Generation complete.

$ sudo dpkg-reconfigure locales
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.

Jetzt werden Sie keine Fehler mehr sehen!

    
Otto Kekäläinen 10.12.2012, 13:45
quelle
333

Nichts, was oben vorgeschlagen wurde, funktionierte in meinem Fall (Ubuntu Server 12.04LTS). Was letztendlich geholfen hat legte in die Datei /etc/environment :

LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8

Aus irgendeinem Grund fehlte es. Die Ausgaben für Gebietsschema und andere Befehle erschienen wie die Variablen richtig definiert wurden. Mit anderen Worten, nehmen wir nicht an, dass alle grundlegenden Dinge deklariert sind, wo sie deklariert werden sollten.

    
Marcin 16.12.2012 05:11
quelle
139

Sie sollten nach der Ausgabe verschwinden:

sudo locale-gen en_US en_US.UTF-8
sudo dpkg-reconfigure locales 

dpkg-reconfigure konfiguriert die Pakete neu, nachdem sie bereits vorhanden waren        Eingerichtet. Übergeben Sie die Namen eines zu rekonfigurierenden Pakets oder von Paketen.        Es werden Konfigurationsfragen gestellt, ähnlich wie beim Paket        zuerst installiert.

    
Rinzwind 11.07.2012 16:19
quelle
106

Fügen Sie Ihrer .bashrc -Datei einfach Folgendes hinzu (vorausgesetzt, Sie verwenden bash)

export LC_ALL="en_US.UTF-8"
    
ratz 08.11.2012 10:42
quelle
86

Dies ist ein häufiges Problem, wenn Sie eine Remoteverbindung herstellen. Daher besteht die Lösung darin, Ihr Gebietsschema nicht weiterzuleiten. Bearbeiten Sie /etc/ssh/ssh_config und kommentieren Sie SendEnv LANG LC_* line.

    
user249697 01.10.2014 02:45
quelle
61

Dafür gibt es einen Befehl:

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

Es aktualisiert /etc/default/locale mit den angegebenen Werten.

    
sgtpep 01.08.2014 13:51
quelle
29

Was am 12.10 für mich funktionierte, war folgendes:

apt-get install language-pack-en-base  

Dies war, nachdem dpkg-reconfigure locales keine Ergebnisse erzeugt hat.

    
George Answerology 28.04.2013 04:01
quelle
16

Vergessen Sie nicht, Ihre SSH-Sitzung (oder Ihr X11) zu verlassen, indem Sie das Programm verlassen und sich erneut anmelden. All diese Vorschläge funktionierten nicht für mich, wenn ich mich nicht wieder eingeloggt habe ....

    
Michael R. Hines 26.09.2014 08:51
quelle
11

Für Ubuntu 12.10 funktionierte nichts davon, außer für ratzs 'Lösung. Ich empfehle, dies zu Ihrer /etc/bash.bashrc Datei hinzuzufügen:

export LC_ALL="en_ZA.UTF-8"
export LC_CTYPE="en_ZA.UTF-8"
    
Lovemore Nalube 27.03.2013 04:19
quelle
11

Ich steckte in einem seltsamen Zustand fest, in dem meine lokale Maschine auf es eingestellt war und die entfernte Maschine (via vagrant ) in einem unbehandelten Zustand bereitgestellt wurde. Daher musste ich das Handbuch export= nur verwenden, um eine erfolgreiche dpkg-reconfigure zu ermöglichen. Dann ist das System in Ordnung.

export LC_ALL="en_US.UTF-8"
sudo dpkg-reconfigure locales
    
charneykaye 22.03.2016 19:02
quelle
9

Ich habe ein Bash-Skript geschrieben, um das Problem zu beheben Die obigen Antworten sind hilfreich, aber das Festlegen der Gebietsschemavariablen durch einfaches Exportieren der Werte in die Shell-Variable funktioniert nur für eine Sitzung. Ich habe dieses Problem dauerhaft gelöst, indem ich die Gebietsschemavariablen in der .bash_profile-Datei exportiert habe. Sie können auch /etc/profile file anstelle von .bash_profile verwenden.

echo "export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8">>~/.bash_profile

Vergessen Sie nicht source the .bash_profile und folgen Sie der Skript im einfachen Setup.

    
Ajeet Khan 27.02.2016 20:26
quelle
8

Sie können versuchen:

export LANGUAGE=ru_RU.UTF-8
export LC_CTYPE=ru_RU.UTF-8
export LC_NUMERIC=ru_RU.UTF-8
export LC_TIME=ru_RU.UTF-8
export LC_COLLATE=ru_RU.UTF-8
export LC_MONETARY=ru_RU.UTF-8
export LC_MESSAGES=ru_RU.UTF-8
export LC_PAPER=ru_RU.UTF-8
export LC_NAME=ru_RU.UTF-8
export LC_ADDRESS=ru_RU.UTF-8
export LC_TELEPHONE=ru_RU.UTF-8
export LC_MEASUREMENT=ru_RU.UTF-8
export LC_IDENTIFICATION=ru_RU.UTF-8
export LC_ALL=ru_RU.UTF-8

wobei ru_RU Ihre Landesvorwahl ist.

    
Koss 17.06.2013 15:34
quelle
6

Wie gesagt hier im Debian-Wiki , können Sie /etc/locale.gen bearbeiten und alle Gebietsschemata hinzufügen (oder auskommentieren, Ich hatte eine Liste mit allen Gebietsschemata, aber mit Ausnahme der, die ich als Kommentar verwendet habe. Sie möchten Unterstützung für Ihr System haben. Dann führe

aus
sudo dpkg-reconfigure locales

um die Gebietsschemas auf Ihrem System zu aktualisieren. Nun sind alle Gebietsschemata, die Sie in /etc/locale.gen hinzugefügt / unkommentiert haben, ohne Warnungen auf Ihrem System verfügbar.

    
msrd0 14.12.2014 12:28
quelle
6

Die aktuell akzeptierte Antwort ist in der Fehlersuchstrategie nicht ausreichend, da Sie einen menschlichen Fehler haben können. Du hast dein System auf en_US eingerichtet, aber du hast en_GB aktiviert in /etc/locale.gen wie ich es im Thread hier für Raspberry Pi 3b. Sie sollten all Ihre verwendeten Gebietsschemas in /etc/locale.gen aktiviert haben.

Ich hatte en_GB.UTF-8 UTF-8 nur in /etc/locale.gen aktiviert. Ich sollte dort nur en_US.UTF-8 UTF-8 aktiviert haben, weil andere Befehle dafür ausgeführt werden. Also habe ich GB und unkommentierte US kommentiert, und alles funktioniert jetzt

masi@raspberrypi:~ $ sudo vim /etc/locale.gen

masi@raspberrypi:~ $ sudo locale-gen 
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.

masi@raspberrypi:~ $ sudo a2enmod rewrite && a2enmod headers && a2enmod ssl
Module rewrite already enabled
Module headers already enabled
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Module socache_shmcb already enabled
Module ssl already enabled

Jetzt bekomme ich diese Länderfehler nicht mit irgendwelchen Befehlen.

System: Raspbian Jessie
Hardware: Raspberry Pi 3b

    
quelle
3

Wenn Sie die KDE-Umgebung verwenden, überprüfen Sie die Datei setlocale.sh in ~/.kde/env/ :

$ cat ~/.kde/env/setlocale.sh 
export LANG=en_US.UTF-8
export LANGUAGE=en_US:ru:en
    
MaximKostrikin 05.02.2014 09:36
quelle
2
  1. Möglicherweise müssen Sie sudo dpkg-reconfigure auch für die Anwendung ausführen, die Sie installiert haben, während die Einstellungen für die Ländereinstellung ungültig waren / nicht übereinstimmten.

    Während das Systemgebietsschema falsch eingerichtet wurde, habe ich vim installiert. Später, als das System-Gebietsschema korrigiert wurde, sah ich eine Situation, in der vim utf-8 Zeichen fälschlicherweise als seltsame Symbole zeigte, während nano und less sie korrekt zeigten. Ausführen

    sudo dpkg-reconfigure vim
    

    scheint das Problem zu beheben, nachdem die Systemeinstellungen behoben wurden.

  2. Ich habe auch das Gleiche bemerkt, wie bereits erwähnt: Sie müssen SSH möglicherweise trennen / erneut verbinden, um Änderungen sichtbar zu machen.

ajaaskel 18.12.2014 20:02
quelle
2

Das Hinzufügen des folgenden Textes zu ~/.profile funktioniert für mich:

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

Ich benutze Ubuntu 16.04 LTS 64-Bit-Server auf Linode.

    
Jingguo Yao 09.05.2017 05:07
quelle
1

Dies funktionierte für mich, als ich das gleiche Problem hatte (basierend auf der Lösung bereitgestellt von dman ):

sudo sh -c "echo -e 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"
    
pythonhunter 27.08.2014 07:21
quelle
1

Ich hatte ein Problem, das Thema 'Agnoster' mit oh-my-zsh in meiner docker ierten Workstation mit ähnlichen Fehlermeldungen auszuführen. (Es ist schneller als wsl IMO und ich kann docker.sock in diesen Container über Hyper-V VM verwalten, die von Docker For Windows verwaltet wird, was mir erlaubt, docker Sachen zu machen)

Das Kombinieren einiger der Vorschläge aus den Antworten half mir dabei.

Ich habe das zu meinem Dockerfile

hinzugefügt
RUN apt-get install -y locales
RUN sudo locale-gen "en_US.UTF-8"
RUN echo 'LANG="en_US.UTF-8"' > /etc/profile.d/locale.sh
RUN echo 'LANGUAGE="en_US.UTF-8"' >> /etc/profile.d/locale.sh
RUN echo 'LC_ALL="en_US.UTF-8"' >> /etc/profile.d/locale.sh

Hier ist eine Zusammenfassung, wenn Sie es ausprobieren möchten.

    
sdkks 30.06.2018 16:25
quelle

Tags und Links