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?


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.


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


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.


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"

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)


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.


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

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


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" 

-3

edytować /etc/sysconfig/i18n

Zmiana LANG="us" naLANG="en_US"

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.