Wie man Gebietsschemaeinstellungen in Debian Squeeze behebt

17

Ich erhalte gelegentlich Gebietsschemafehler und habe versucht, dpkg-reconfigure locales auszuführen, um das Problem zu beheben. Hier ist die Ausgabe:

:~$ sudo dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_CTYPE = "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_ALL to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_CTYPE to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_ALL to default locale: No such file or directory
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LANG = "C"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LANG = "C"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

Ich habe nach / usr / bin / locale gesucht, aber es existiert nicht auf meinem System. Muss ich es schaffen? Was stecke ich da rein?

Außerdem habe ich eine verwandte Frage gefunden , die besagt, dass die Ursache seines Problems in der Datei sshd_config lag. Die Datei hatte folgenden Eintrag:

AcceptEnv LANG LC_*

Ich mache mir hauptsächlich Sorgen, dass es Probleme für meinen VPS verursachen könnte, andernfalls würde ich das Problem gerne ignorieren, wenn es nichts Wichtiges ist. Was soll ich machen? Vielen Dank!

Blogjunkie
quelle
Dasselbe Problem (LC_CTYPE = UTF-8, was falsch ist) kann auftreten, wenn Sie sich über ssh von einem Mac an einer Linux-Box anmelden und Ihr Terminal automatisch Umgebungsvariablen setzt. Dafür gibt es ein Kontrollkästchen. Deaktivieren Sie es und Sie können loslegen. In iTerm ist es in der Registerkarte Profil-> Terminal.
Raarts
Es scheint einen Fehler bei einigen Debian-basierten Distributionen (einschließlich Ubuntu) zu geben. Die Verwendung von fr_FR.UTF-8 führte zu Problemen (und das Gebietsschema war vorhanden). Das locale-gen frProblem wird behoben, wenn alle fr-Gebietsschemas (fr_BE, fr_CH usw.) erstellt werden. Vielleicht versuchenlocale-gen en
Antony Gibbs

Antworten:

10

zuerst:

sudo apt-get purge locales

dann:

sudo aptitude install locales

und der berühmte:

sudo dpkg-reconfigure locales

Dadurch wird das System von Gebietsschemas befreit, dann werden die Gebietsschemas erneut installiert und libc6 von 2.19 auf 2.13 heruntergestuft, was das Problem ist. Anschließend werden die Gebietsschemas erneut konfiguriert.

tkjef
quelle
Ich habe genau das gleiche Problem. Durch diese Antwort und einschließlich der Jessie-Repositorys konnte ich localesohne Downgrade installieren libc6.
ShgnInc
das hat nicht geholfen
aexl
8

Wenn dies passiert, wenn SSH an Ihre Box, aber nicht an die Konsole gesendet wird, versuchen Sie, Ihren ssh-Client (auf Ihrem lokalen Computer) neu zu konfigurieren . Unter Mac OS X zum Beispiel / private / etc / ssh_config bearbeiten und auskommentieren

# SendEnv LANG LC_*

Vielen Dank an den Posten von Bredman im Rasberry Pi Bulletin Board .

Adrian Zaugg
quelle
Diese Datei jetzt: / private / etc / ssh / ssh_config
b4d
7

Ich hatte dieses Problem für eine lange Zeit und alle üblichen Ratschläge zu dpkg-reconfigure locales, locale-gen, etc haben nicht geholfen. Also habe ich ein bisschen mit den Umgebungsvariablen rumgespielt und festgestellt, dass das System die LC_CTYPEUmgebungsvariable blockiert ! UTF-8ist kein gültiger Wert dafür. Festlegen, um es zu en_US.UTF-8beheben.

Um die Änderung dauerhaft zu machen, rannte ich

update-locale LC_CTYPE=en_US.UTF-8

was schreibt an /etc/default/locale. Starten Sie das System anschließend neu, damit es vollständig wirksam wird.

Hongli Lai
quelle
Leider ergibt diesperl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_CTYPE = "UTF-8", LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). *** update-locale: Error: invalid locale settings: LC_CTYPE=en_US.UTF-8
aexl
2

Ich habe dies schon einmal bei älteren Debian-Installationen gesehen, und obwohl es ärgerlich war, habe ich noch nie gesehen, dass es ein Problem verursacht.

Wenn

  /usr/bin/locale 

fehlt, versuche (als root):

  apt-get install libc-bin

Das sollte libc-bin installieren und / usr / bin / locale bereitstellen.

Diese AcceptEnv-Zeile in Ihrer sshd_config ist ziemlich normal und sollte hier nicht die Ursache für Ihr Problem sein.

Chad Feller
quelle
Da libc-bin bereits installiert war, habe ich es aktualisiert und versucht, es dpkg-reconfigure localeserneut auszuführen . Keine Freude :(
Blogjunkie
Existiert / usr / bin / locale jetzt? Wenn ja, was ist die Ausgabe von: locale -aund was ist in /etc/default/locale?
Chad Feller
Der Inhalt von `/ etc / default / locale ': # Datei generiert von update-locale LANG = en_US.UTF-8
blogjunkie
locale -aGibt mir: Gebietsschema: Kann LC_CTYPE nicht auf das Standardgebietsschema setzen: Keine solche Datei oder Verzeichnis C de_DE.utf8 POSIX
blogjunkie
apt behauptete, dass libc-bin installiert war, aber mindestens eine Datei fehlte (/ usr / bin / locale), und eine Neuinstallation von libc-bin scheint dies behoben zu haben. Kannst du es versuchen apt-get install --reinstall locales? Dann wird für eine gute Maßnahme, versuchen locale-gen, die alle Gegenden regenerieren , die in unkommentiert werden /etc/locale.gen(sollten Sie eine Zeile wie haben en_US.UTF-8 UTF-8). Überprüfen Sie anschließend, ob dies locale -afunktioniert.
Chad Feller
2

Hat Folgendes getan, als Manoj, hat es aber zu # ~ / .bashrc hinzugefügt:

export LC_ALL=en_US.utf8
export LANGUAGE=en_US.utf8
Hauge
quelle
1

Wenn Sie die Fehler beim Senden an ein Remote-System erhalten und das Remote-System nicht ändern möchten (z. B. durch Ändern von sshd_config), können Sie auf Ihrem lokalen System Folgendes ausführen (vorausgesetzt, bash)

export LC_ALL=en_US
export LANGUAGE=en_US

und dann ssh user@remote

Manoj Thulasidas
quelle
1

Auf meiner neuen Debian-Installation fehlten (minimale) Gebietsschemas vollständig. Das Installieren von it ( aptitude install locales) und das Ausführen locale-genhaben den Trick gemacht. Also Leute, tut es wie Chad Feller erwähnt, aber prüft localeszuerst , ob das Paket installiert ist.

Achim Sperling
quelle
0

Wenn Sie die PAM-Authentifizierung für ssh in /etc/ssh/sshd_config( UsePAM no) deaktiviert haben, ist die verantwortliche Konfiguration in /etc/pam.d/loginnicht wirksam:

session required pam_env.so readenv=1 envfile=/etc/default/locale

Das Ergebnis: /etc/default/localescheint keine Wirkung zu haben.

So müssen Sie Ihren Client so konfigurieren , die LANG Vars oder exportieren schicken die env vars in dem Profil Skripte wie ~/.profile, ~/bashrcusw.

Mehr: http://wiki.debian.org/Locale#Standard

Jan-Philip Loos
quelle
0

Ich habe deutsches VPS verwendet und konnte das Gebietsschema nicht ändern, da kein englisches Sprachpaket installiert war.

Nach der Installation konnte ich endlich das Gebietsschema ändern

aptitude install language-pack-en
valentt
quelle
0

Auf Debian-Systemen wird dies Ihr Problem lösen:

apt-get install locales-all

Installieren Sie auf Ubuntu-Systemen ein bestimmtes Sprachpaket, zum Beispiel:

apt-get install language-pack-en

locale-gen en_US.UTF-8

Geza
quelle
0

Mac, der sich mit einer neuen Debian 10-Installation verbindet. Keine der über Stack Exchange gegoogelten Antworten hat geholfen. Folgendes hat getan (und war auch unkompliziert und zuverlässig):

sed -i "s/^AcceptEnv/#AcceptEnv/g" /etc/ssh/sshd_config

Führen Sie dies auf Ihrer Debian-Box aus und es verhindert, dass das verbundene Mac-Terminal die Server-Gebietsschemata durcheinanderbringt ( weitere Informationen ).

Als Bonus kann dies sogar die Sicherheit des Servers verbessern .

aexl
quelle