Jak naprawić ustawienia regionalne w squeeze Debiana

17

Czasami dostaję błędy ustawień regionalnych i próbowałem uruchomić ustawienia regionalne dpkg-rekonfigurować, aby rozwiązać problem. Oto wynik:

:~$ 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").

Szukałem / usr / bin / locale, ale nie ma go w moim systemie. Czy muszę go utworzyć? Co mam tam włożyć?

Znalazłem również pokrewne pytanie, które mówi, że przyczyną jego problemu był plik sshd_config. Plik miał następujący wpis:

AcceptEnv LANG LC_*

Obawiam się głównie, że może to powodować problemy dla mojego VPS, w przeciwnym razie, jeśli to nic poważnego, chętnie zignoruję problem. Co powinienem zrobić? dzięki!

blogjunkie
źródło
Ten sam problem (LC_CTYPE = UTF-8, co jest błędne) może się zdarzyć, gdy zalogujesz się przez ssh z komputera Mac do Linux-a, a terminal automatycznie ustawi zmienne środowiskowe. Jest na to pole wyboru. Odznacz to i możesz iść. W iTerm znajduje się w profilu-> Zakładka Terminal.
raarts
Wygląda na to, że występuje błąd w niektórych dystrybucjach opartych na Debianie (w tym Ubuntu). Korzystanie z fr_FR.UTF-8 dawało problemy (i istniały ustawienia regionalne). Wykonanie a locale-gen frzbuduje wszystkie fr lokalizacje fr (fr_BE, fr_CH itp ...) rozwiązuje problem. Być może spróbujlocale-gen en
Antony Gibbs

Odpowiedzi:

10

pierwszy:

sudo apt-get purge locales

następnie:

sudo aptitude install locales

i słynny:

sudo dpkg-reconfigure locales

Spowoduje to usunięcie systemu ustawień regionalnych, a następnie ponowne zainstalowanie ustawień regionalnych i obniżenie poziomu libc6 z 2.19 do 2.13, co jest problemem. Następnie ponownie konfiguruje ustawienia narodowe.

tkjef
źródło
Mam dokładnie ten sam problem. Tak więc dzięki tej odpowiedzi i włączając repozytoria jessie mogłem zainstalować localesbez obniżenia wersji libc6.
shgnInc
to nie pomogło
aexl
8

Jeśli tak się stanie, gdy SSHing do twojego urządzenia, ale nie na konsoli, spróbuj ponownie skonfigurować klienta ssh (na komputerze lokalnym). Na Mac OS X na przykład edytuj / private / etc / ssh_config i komentuj

# SendEnv LANG LC_*

Dzięki postowi bredmana na tablicy ogłoszeń Rasberry Pi .

Adrian Zaugg
źródło
Ten plik teraz: / private / etc / ssh /
ssh_config
7

Miałem ten problem przez długi czas i wszystkie zwykłe porady dotyczące dpkg-rekonfiguruj ustawienia narodowe, locale-gen itp. Nie pomogły. Więc bawiłem się trochę ze zmiennymi środowiskowymi, a odkryłem, że system borkuje na LC_CTYPEzmiennej środowiskowej! UTF-8nie jest dla niego prawidłową wartością. Ustawienie go en_US.UTF-8naprawić.

Aby zmienić na stałe, pobiegłem

update-locale LC_CTYPE=en_US.UTF-8

który pisze do /etc/default/locale. Następnie uruchom ponownie system, aby całkowicie zadziałał.

Hongli Lai
źródło
Niestety przynosi toperl: 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

Widziałem to wcześniej na starszych instalacjach Debiana i chociaż denerwujące, nigdy nie widziałem, aby powodowało to problem.

Gdyby

  /usr/bin/locale 

brakuje, spróbuj (jako root):

  apt-get install libc-bin

powinien zainstalować libc-bin, podając / usr / bin / locale.

Ta linia AcceptEnv w twoim sshd_config jest dość standardowa i nie powinna być przyczyną twojego problemu tutaj.

Chad Feller
źródło
libc-bin został już zainstalowany, więc zaktualizowałem go i spróbowałem uruchomić dpkg-reconfigure localesponownie. Bez radości :(
blogjunkie
Czy / usr / bin / locale istnieje teraz? Jeśli tak, to jaka jest wydajność: locale -ai co jest /etc/default/locale?
Chad Feller
Zawartość `/ etc / default / locale ': # Plik wygenerowany przez update-locale LANG = en_US.UTF-8
blogjunkie
locale -adaje mi: ustawienia regionalne: Nie można ustawić LC_CTYPE na domyślne ustawienia regionalne: Brak takiego pliku lub katalogu C en_US.utf8 POSIX
blogjunkie
apt twierdził, że libc-bin został zainstalowany, ale brakuje przynajmniej jednego pliku (/ usr / bin / locale), a ponowna instalacja libc-bin wydaje się, że to naprawiło. Można spróbować apt-get install --reinstall locales? Następnie, dla locale-genpewności , spróbuj , który zregeneruje wszystkie lokalizacje, które nie są komentowane /etc/locale.gen(powinieneś mieć linię podobną do en_US.UTF-8 UTF-8). Następnie sprawdź, czy locale -adziała.
Chad Feller,
2

Wykonał następujące czynności jako Manoj, ale dodał to do # ~ / .bashrc:

export LC_ALL=en_US.utf8
export LANGUAGE=en_US.utf8
Hauge
źródło
1

Jeśli otrzymujesz błędy podczas ssh'ing do systemu zdalnego i nie chcesz modyfikować systemu zdalnego (na przykład zmieniając sshd_config), możesz wykonać następujące czynności w systemie lokalnym (zakładając bash)

export LC_ALL=en_US
export LANGUAGE=en_US

i wtedy ssh user@remote

Manoj Thulasidas
źródło
1

W mojej świeżej instalacji Debiana (minimalne) ustawienia narodowe były całkowicie brakujące. Jednak zainstalowanie go ( aptitude install locales) i uruchomienie załatwiło sprawę locale-gen. Więc chłopaki, zróbcie, jak wspomniał Chad Feller, ale sprawdźcie, czy pakiet localeszostał najpierw zainstalowany.

Achim Sperling
źródło
0

Jeśli wyłączyłeś uwierzytelnianie PAM dla ssh in /etc/ssh/sshd_config( UsePAM no), odpowiedzialna konfiguracja /etc/pam.d/loginnie działa:

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

Rezultat: /etc/default/localewydaje się nie mieć żadnego efektu.

Więc trzeba skonfigurować klienta, aby wysłać LANG vars lub wyeksportować env vars w skryptach profilu jak ~/.profile, ~/bashrcetc.

Więcej: http://wiki.debian.org/Locale#Standard

Jan-Philip Loos
źródło
0

Korzystałem z niemieckiego VPS i nie mogłem zmienić ustawień regionalnych, ponieważ nie zainstalowano pakietu języka angielskiego.

Po instalacji mogłem w końcu zmienić ustawienia regionalne

aptitude install language-pack-en
Valentt
źródło
0

w systemach Debian rozwiąże to twój problem:

apt-get install locales-all

w systemach Ubuntu zainstaluj konkretny pakiet językowy, na przykład:

apt-get install language-pack-en

locale-gen en_US.UTF-8

Geza
źródło
0

Mac łączy się ze świeżą instalacją Debiana 10. Żadna z odpowiedzi w Google na całym Stack Stack nie pomogła. Oto, co zrobiło (i było również proste i niezawodne):

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

Uruchom to na swoim pudełku Debiana, a powstrzyma to podłączający się terminal mac przed zepsuciem ustawień regionalnych serwera ( więcej informacji ).

Jako bonus może to nawet poprawić bezpieczeństwo serwera.

aexl
źródło