CentOS 6 i błąd ustawień regionalnych

16

Właśnie zainstalowałem CentOS 6 i za każdym razem, gdy loguję się do systemu przez SSH zdalnie, pojawia się następujący błąd:

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)

Gdy wpisuję „locale” w wierszu polecenia, otrzymuję następujące dane wyjściowe:

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
LANG=en_US.UTF-8
LC_CTYPE=UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Co może być problemem? Jak mogę rozwiązać ten problem?

Cem
źródło
twoje rozwiązanie komentowania SendEnv LANG LC_ * arg działało dla mnie na Mac OS X 10.7.5

Odpowiedzi:

10

Czy na serwerze, z którego korzystasz ssh, masz ustawienia regionalne za pomocą zmiennej środowiskowej? Patrząc na moją instalację CentOS 6, jedyne ustawienia narodowe, które mogę znaleźć obsługiwane, są identyfikowane jako en_US.utf8(wykryte za pomocą locale -apolecenia). Czy to może być problem?

W moich testach, kiedy ustawiłem LC_ALLzmienną środowiskową na en_US.UTF-8ssh'd na serwer, POSIXw moim przypadku ustawiono wyjście polecenia locale . To tak samo, jak kiedy NIE ustawiłem (tj LC_ALL. Nie rozbroiłem ) zmiennej przed ssh'ing.

Kiedy ustawiłem LC_ALLzmienną na en_US.utf8lub en_US.utf-8, ssh'd na moją skrzynkę CentOS 6, dane wyjściowe ustawień narodowych były takie same, jak ustawione na źródłowej.

Zauważ, że nie użyłem żadnych ograniczeń dla UTF.

mdpc
źródło
11
Nawiasem mówiąc, zauważyłem, że dzieje się tak z moich ustawień ssh w systemie Mac OS X Lion. Edytowałem plik / etc / ssh_config i skomentowałem SendEnv LANG LC_ *. To rozwiązało mój problem.
Cem,
@Cem Dzięki za podpowiedź, to naprawia to w Mac OS X Lion.
Zsolt Török
17

Rozwiązano ten problem, wyłączając opcję „Ustaw zmienne środowiskowe podczas uruchamiania” w Ustawieniach terminala> Zaawansowane zgodnie z tym zrzutem ekranu.

wprowadź opis zdjęcia tutaj

UWAGA: Jeśli korzystasz z iTerm2, możesz wyłączyć opcję „Ustaw automatycznie zmienne regionalne” w Preferencje> Profile> Terminal

Nils
źródło
1
To zadziałało dla mnie. W szczególności Terminal.app ustawiał „LC_CTYPE = UTF-8”, co następnie powodowało błędy zgłaszane przez OP. Alternatywnie, unset LC_CTYPElub export LC_CTYPE=en_US.UTF-8fixup problem po zalogowaniu.
opóźnienie
To rozwiązało dla mnie, dzięki
pjvds
11

Prosta droga:

Dodaj

 LC_CTYPE="en_US.UTF-8"

do /etc/sysconfig/i18n.

gpupo
źródło
To działa dla mnie po tylu próbach.
Tommy
2

Dla mnie zadziałało dodanie linku symbolicznego na serwerze CentOS w następujący sposób:

ln -s /usr/lib/locale/en_US.utf8 /usr/lib/locale/UTF-8

Po wykonaniu tych poleceń, takie jak ta praca:

export LC_CTYPE=UTF-8

Jeśli nie, to ostatnie polecenie kończy się niepowodzeniem z tym błędem:

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

Teraz jeszcze prostszym rozwiązaniem jest dodanie tej linii do / etc / bashrc na serwerze:

export LC_CTYPE="en_US.utf8"
gnrfan
źródło
Dzięki za wkład! to działało naprawdę świetnie. Wreszcie udało mi się usunąć ten irytujący komentarz ...
cristobal
2

Mam ten konkretny komunikat podczas logowania z systemu Solaris X do hosta Centos.

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

Problem pochodzi z 2 ustawień:

  1. W moim domyślnym systemie ssh_config, proszę system o przekazanie tych zmiennych.

Wyślij zmienne środowiskowe związane z ustawieniami lokalnymi SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES

  1. Na moim hoście źródłowym te ustawienia zostały ustawione w następujący sposób:

    ŹRÓDŁO # LANG = LC_CTYPE = fr_FR.UTF-8 LC_NUMERIC = fr_FR.UTF-8 LC_TIME = fr_FR.UTF-8 LC_COLLATE = fr_FR.UTF-8 LC_MONETARY = fr_FR.UTF-8 LC_MESSAGES = fr.UTF-8 LC_ALL =

Ale, jak widać, LC_MESSAGES jest ustawiony na fr.UTF-8, co nie jest opcją na moim docelowym hoście.

 DEST#locale -a | grep fr_FR
 fr_FR
 fr_FR@euro
 fr_FR.iso88591
 fr_FR.iso885915@euro
 fr_FR.utf8

Problem został rozwiązany, wymuszając na moim hoście źródłowym, na .bash_profile: # eksport LC_ALL = fr_FR.UTF-8 eksport LANG = fr_FR.UTF-8

Mógłbym to rozwiązać, prosząc mojego docelowego hosta, aby nie pobierał tej zmiennej z żadnego połączenia ssh (ogólnie lub tworząc plik ssh_config dla mojego użytkownika)

Kaalahaan
źródło
1

W lokalnym systemie Centos 6.2: To nie pomogło:

localedef -i en_US -f UTF-8 en_US.UTF-8

To działało:

localedef --no-archive -i en_US -f UTF-8 en_US.UTF-8

Ja również usunięte locale-archivew /usr/lib/locale. Nie wiem, czy to było konieczne.

BobM
źródło
1

To była moja poprawka w przeszłości dla błędów regionalnych.

Uruchom następujące polecenie: locale-gen

Następnie edytuj /etc/locale.gen. Upewnij się, że następujące komentarze nie są uwzględnione:

en_US.UTF-8 UTF-8  
en_US ISO-8859-1  

generate locale

locale-gen
Thomas Vincent
źródło
1

Z Iterm2 jest inaczej.
Idź do Iterm2 -> Preferences, a następnie Idź do Profileskarty i wybierz Terminalkartę od dołu.
Przejdź do Environmentkategorii i odznacz;

Ustaw zmienne regionalne automatycznie

Na koniec zamknij i rozpocznij nową sesję.

wprowadź opis zdjęcia tutaj

crsuarezf
źródło
0

i upewnij się LC_ALL="en_US.UTF-8" jest w / etc / sysconifg / i18n lub został dodany

przykładowa treść

LANG="en_GB.UTF-8"
SYSFONT="latarcyrheb-sun16"
LC_ALL="en_US.UTF-8" 
mayod
źródło
-3

edytować /etc/sysconfig/i18n

Zmiana LANG="us" naLANG="en_US"

Zapisz i wyjdź, wyloguj się i zaloguj ponownie.

NateDJ
źródło