Frage Wie behebe ich mein Gebietsschema Problem?


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?


462
2017-07-11 14:08


Ursprung


Verbunden: Wie stelle ich das Gebietsschema ein? - Lucio
mögliches Duplikat von Gebietsschema-Variablen haben in der Remote-Shell keine Auswirkungen (Perl: Warnung: Gebietsschemaeinstellung fehlgeschlagen.) - Denilson Sá Maia
Einfache und dauerhafte Lösung für alle Benutzer: askubuntu.com/questions/881742/ ... - Galvani


Antworten:


Erster Lauf locale 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 Gebietsschemas neu, um auf Folgendes 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!


471
2017-12-10 12:45



hat nicht für mich gearbeitet - Umair
Dies hat bei einer Reihe von Systemen für mich funktioniert. Gibt es eine Möglichkeit, dieses Problem auf neu installierten Systemen zu vermeiden? - Brylie Christopher Oxley
@UmairAyub möglicherweise mehr als ein unbekanntes Gebietsschema haben, versuchen Sie Folgendes: für y in $ (locale | cut -d '=' -f 2 | sortieren | uniq); mach locale-gen $ y; erledigtEs erzeugt ein Gebietsschema für jede Definition, die Sie haben - Ivan Buttinoni
Der Ort in der locale-gen Der Befehl sollte in doppelten Anführungszeichen stehen, damit dies richtig funktioniert: $ sudo locale-gen "en_US.UTF-8" - Sheharyar
@Umair Bei diesem Problem besteht ein hohes Risiko für menschliche Fehler. Ihr System ist konfiguriert für en_GB standardmäßig, aber Sie richten es auf en_US. Sie müssen manuell kommentieren en_GB und auskommentieren en_US im /etc/locale.gen. Siehe meine Antwort askubuntu.com/a/790373/25388 in der Hardware Raspberry Pi 3b und dem System Raspbian Jessie. - Léo Léopold Hertz 준영


Nichts, was oben vorgeschlagen wurde, funktionierte in meinem Fall (Ubuntu Server 12.04LTS). Was letztendlich geholfen hat legte in die Akte /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 Sie nicht an, dass alle grundlegenden Sachen erklärt werden, wo es erklärt werden sollte.


339
2017-12-16 04:11



Ja, keine andere funktionierte außer dieser, vielleicht aufgrund der aktualisierten Version. Aber lieber ziehe ich das vor /etc/default/locale. - Naveed
Aktualisiert /etc/default/locale und keine Warnungen mehr. Vielen Dank - ohho
Ja, die anderen haben nicht für mich gearbeitet. Dieser hat getan. Hier ist der One-Liner, den ich für die unbeaufsichtigte Aktualisierung von diesem verwendet habe. sudo sh -c "echo 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment" - dman
@ user163207 Ihre Lösung ist inkorrekt, weil sie hängt (anstatt zu überschreiben), es ist nicht die empfohlene Datei und echo muss mit der Aktivierung von Backslash-Escapes ausgeführt werden. Dies ist das gleiche wie bei Ihnen, aber mit dem oben genannten behoben: sh -c "echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale" - glarrain
VERGESSEN SIE NICHT LOGUp UND RE-LOGIN! - S.M.Mousavi


Sie sollten nach der Ausgabe verschwinden:

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

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


139
2017-07-11 14:19



Ich bin froh, dass meine Probleme vor einem Jahr dir geholfen haben, das zu beheben;) - Rinzwind
Sollte dieses Gebietsschema nicht standardmäßig generiert werden? ich meine en, en_AU, en_CA, en_GB sind standardmäßig vorhanden, aber nicht en_US? - Daniel Serodio
@Rinzwind Vielen Dank für Ihre Mühe! Ich entschuldige mich; Ich hätte meine Frage besser formulieren sollen. Was ich fragen wollte, ist: Warum muss das Locales-Paket neu konfiguriert werden, nachdem neue Locales generiert wurden? Scheint mir wie die Locales funktionieren auch ohne dpkg-reconfigure. - Victor
Mit Ubuntu 14.04 in einem Docker-Container wurde also nichts gesetzt. Djangos makemessage braucht das. Das hat perfekt funktioniert! Vielen Dank. - Justin
Ich glaube das sudo wird vermisst. Vielleicht sollte es sein: sudo dpkg-reconfigure locales. Dies funktionierte für mich nach einer Neuinstallation von Ubunty 14.10 Desktop 64-Bit. - bgoodr


Fügen Sie einfach Folgendes zu Ihrem Konto hinzu .bashrc Datei (vorausgesetzt, Sie verwenden bash)

export LC_ALL="en_US.UTF-8"

108
2017-11-08 09:42



Dieser süße Fix funktionierte für mich auf meinem Amazon-EC2-Image (lief ihre Standard RHEL AMI) Vielen Dank! :) - gideon
Dieser arbeitete für mich mit dem Ubuntu 12.04 Bild von Digitalocean. - Inan Berbatov
Das hat mein Problem behoben. Ich muss eine Frage stellen: Wie kommt es, dass LC_ALL nicht durch den Befehl locale-gen gesetzt wurde, wie andere Antworten über diesem Befehl sagten? - alexserver
Seltsam, die obige Lösung funktionierte nicht für mich, aber dieses hier! Nach dem Export LC_ALL Ich könnte endlich verwenden sudo dpkg-reconfigure locales. - sobi3ch
endlich, nachdem ich viele tricks versucht habe, ist dies die arbeit für mich auf kubuntu 14.04.3 lts. Vielen Dank! - Jonas


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


88
2017-10-01 00:45



Ich habe andere Antworten versucht, aber vergessen, dass ich aus der Ferne Verbindung herstellte, bis ich deine Antwort sah. Verschiedene Gebietsschemas auf dem SSH-Server und dem Client verursachten das Problem. - Hieu
Auf OSX (Verbindung zu Ubuntu) ist es bei /etc/ssh_config - Michiel de Mare
One-Liner, um dies zu tun: sed -e '/SendEnv/ s/^#*/#/' -i /etc/ssh/ssh_config (nützlich für die Server-Bereitstellung) - Albin
Ich konnte LC_ALL nicht auf dem Gebietsschema-Rechner einstellen, aber es hat mein Problem mit dem Remote-Server behoben, danke. - Alexander Shlenchack
Es ist wahrscheinlich erwähnenswert, dass Sie die Datei auf dem lokalen Rechner und nicht auf dem entfernten Rechner bearbeiten müssen. - Clashsoft


Dafür gibt es einen Befehl:

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

Es aktualisiert sich /etc/default/locale mit bereitgestellten Werten.


63
2017-08-01 11:51



Das ist echt! Vergessen Sie nicht, Ihre Shell abzumelden / neu zu laden, sonst werden Sie die Änderungen nicht sehen. Vergessen Sie nicht, die genehmigte Antwort zum Generieren und Neukonfigurieren von Locales zu lesen. - Erik Zivkovic
Laufen locale zeigt immer noch keine utf-Werte an. - Cerin
@Cerin: Myybe, ein Anruf an locale-gen wird vermisst. Vorher muss man es tun apt-get install locales. - koppor
Dies wird LANG für die Root-Shell unter Ubuntu 16.04 nicht ändern, da es in /root/.profile überschrieben wird. - Willem


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

apt-get install language-pack-en-base  

Das war danach dpkg-reconfigure locales ergab keine Ergebnisse.


30
2018-04-28 02:01



Dies ist die beste Antwort. Es ist nicht so, dass meine Locales falsch eingerichtet wurden, aber sie existierten tatsächlich nicht. Ich denke, das ist ähnlich dem OP-Problem auch ("Keine solche Datei oder Verzeichnis" ist ziemlich klar, wenn Sie Ihr Gebietsschema ist setz dich richtig!). - Breakthrough
Ich bekam das OP-Problem immer, wenn ich apt-get auf Ubuntu 12.04 benutzte. Dies löste es perfekt, ohne irgendwelche Dateien bearbeiten zu müssen. - Deepend
"Sprachpaket-Basis ist bereits die neueste Version." - karlingen
Logout und Login können helfen - S.M.Mousavi
Arbeitete für mich in einem Ubuntu chroot unter debian. Vielen Dank :) - Wyatt8740


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


16
2017-09-26 06:51



Dieser Kommentar sollte mehr Aufwertungen erhalten oder zumindest muss die Tatsache in jeder Antwort hervorgehoben werden. - ni8mr


Für Ubuntu 12.10 funktionierte nichts davon, außer für die Lösung von Ratz. Ich empfehle das Hinzufügen zu Ihrer /etc/bash.bashrc Datei:

export LC_ALL="en_ZA.UTF-8"
export LC_CTYPE="en_ZA.UTF-8"

11
2018-03-27 03:19



Von allen oben genannten Lösungen. Dies ist das einzige, was für mich funktioniert hat. - JohnnyQ


Ich steckte in einem seltsamen Zustand fest, in dem mein lokaler Rechner eingestellt war es und so die entfernte Maschine (über vagrant) wurde in einem nicht behandelten Zustand bereitgestellt. Daher musste ich das Handbuch verwenden export= nur um einen Erfolg zu ermöglichen dpkg-reconfigure. Dann ist das System in Ordnung.

export LC_ALL="en_US.UTF-8"
sudo dpkg-reconfigure locales

11
2018-03-22 18:02



Beste! Durch dpkg-recofigure zeigt Mojibake an. - Orient


Ich schrieb ein Bash-Skript Die obigen Antworten sind hilfreich, aber das Festlegen der Gebietsschemavariablen durch einfaches Exportieren der Werte in die Shellvariable 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 verwenden /etc/profile Datei statt .bash_profile.

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

Vergiss nicht zu source das .bash_profile und folge dem Skript in einfacher Einrichtung.


9
2018-02-27 19:26