Помилка CentOS 6 та локаль


16

Щойно я встановив CentOS 6 і щоразу, коли віддалено входив у систему через SSH, я отримую таку помилку:

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

Коли я набираю "locale" в командному рядку, я отримую такий висновок:

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=

У чому може бути проблема? Як я можу вирішити це питання?


Ваше рішення прокоментування LAN SendEnv LANG LC_ * arg працювало на мене на Mac OS X 10.7.5

Відповіді:


10

На сервері, з якого ви ssh, у вас встановлений локальний код через змінну середовища? Переглядаючи мою установку CentOS 6, єдина локаль, яку я можу знайти підтримується, ідентифікована en_US.utf8(виявлена ​​за допомогою locale -aкоманди). Чи може це бути проблемою?

Під час мого тестування, коли я встановлював LC_ALLзмінну середовища на en_US.UTF-8, ssh'd на сервер, POSIXу моєму випадку було встановлено вихід моєї команди locale . Це те саме, що коли я НЕ встановив (тобто скасувати) LC_ALLзмінну перед ssh'ing.

Коли я встановив свою LC_ALLзмінну на en_US.utf8або en_US.utf-8, ssh'd, у мій вікно CentOS 6, вихід локалі був таким самим, як у встановленому для вихідного поля.

Зауважте, що я не використовував жодних кришок для UTF.


11
До речі, я помітив, що це відбувається з моїх налаштувань Mac OS X Lion ssh. Я відредагував / etc / ssh_config файл та прокоментував SendEnv LANG LC_ *. Це вирішило мою проблему.
Cem

@Cem Дякую за підказку, це дійсно виправляє її на Mac OS X Lion.
Zsolt Török

17

Вирішили це, відключивши "Встановити змінні середовища локальної системи при запуску" в розділі Налаштування терміналу> Додатково відповідно до цього знімка екрана.

введіть тут опис зображення

ПРИМІТКА. Якщо ви використовуєте iTerm2, ви можете вимкнути параметр "Встановити змінні локально" автоматично в Налаштуваннях> Профілі> Термінал


1
Це працювало для мене. Зокрема, Terminal.app встановлював "LC_CTYPE = UTF-8", що потім спричиняло помилки, повідомлені ОП. Як альтернативи, unset LC_CTYPEабо export LC_CTYPE=en_US.UTF-8FixUp проблему після входу в систему .
tardate

Це вирішило це для мене, thx
pjvds

11

Простий спосіб:

Додайте

 LC_CTYPE="en_US.UTF-8"

до /etc/sysconfig/i18n.


Це працює для мене після стількох спроб.
Томмі

2

Для мене працювало додавання символьної посилання на сервер CentOS так:

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

Після виконання таких команд:

export LC_CTYPE=UTF-8

Якщо цього не зробити, ця остання команда не працює з цією помилкою:

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

Тепер ще простішим рішенням є лише додавання цього рядка до / etc / bashrc на сервері:

export LC_CTYPE="en_US.utf8"

Дякую за вклад! це спрацювало справді чудово. Нарешті вдалося видалити цей прикрий коментар ...
cristobal

2

Це конкретне повідомлення я отримав, коли входив із Solaris X на хост 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

Проблема пов'язана з двома налаштуваннями:

  1. У моїй системі ssh_config за замовчуванням я прошу систему передати цю змінну.

Надіслати змінні середовища, пов’язані з локаллю SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES

  1. У моєму вихідному хості налаштування thoses було встановлено так:

    ДЖЕРЕЛ # 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_MESSAGE =

Але, як бачите, LC_MESSAGES встановлюється на fr.UTF-8, що не є опцією для мого хоста.

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

Проблему було вирішено примусово на моєму вихідному хості в .bash_profile: # export LC_ALL = fr_FR.UTF-8 export LANG = fr_FR.UTF-8

Я міг би вирішити це, попросивши свого господаря dest, щоб не брати цю змінну з жодного ssh-з'єднання (як правило, або створивши локальний файл ssh_config для мого користувача)


1

У локальній системі Centos 6.2: Це не допомогло:

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

Це спрацювало:

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

Також я видалив locale-archiveу /usr/lib/locale. Я не знаю, чи це було потрібно.


1

Це було моє виправлення в минулому для локальних помилок.

Виконайте наступне: locale-gen

Потім відредагуйте /etc/locale.gen. Переконайтесь, що це не коментується:

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

generate locale

locale-gen

1

З Iterm2 , інше.
Перейдіть до Iterm2 -> Preferences, потім перейдіть на Profilesвкладку та виберіть Terminalвкладку знизу.
Перейдіть до Environmentкатегорії та зніміть позначку;

Встановити змінні локалі автоматично

Нарешті, закрийте і починайте нову сесію.

введіть тут опис зображення


0

і переконайтеся, що LC_ALL="en_US.UTF-8"він включений або доданий до / etc / sysconifg / i18n

Приклад змісту

LANG="en_GB.UTF-8"
SYSFONT="latarcyrheb-sun16"
LC_ALL="en_US.UTF-8" 

-3

редагувати /etc/sysconfig/i18n

Змінити LANG="us"наLANG="en_US"

Збережіть та вийдіть, вийдіть із системи та ввійдіть назад.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.