Как исправить языковые настройки в Debian squeeze

17

Иногда я получаю ошибки локали, и я пытался запустить локализацию dpkg -configure для решения проблемы. Вот вывод:

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

Я искал / usr / bin / locale, но он не существует в моей системе. Нужно ли его создавать? Что я там положу?

Также я нашел связанный вопрос, который говорит, что причина его проблемы была в файле sshd_config. Файл имел следующую запись:

AcceptEnv LANG LC_*

Я в основном обеспокоен тем, что это может вызвать проблемы для моего VPS, в противном случае, если это не будет чем-то важным, я буду рад проигнорировать проблему. Что я должен делать? Благодарность!

blogjunkie
источник
Та же самая проблема (LC_CTYPE = UTF-8, что неправильно) может возникнуть, когда вы входите через ssh с Mac в Linux, и ваш терминал автоматически устанавливает переменные окружения. Для этого есть флажок. Снимите флажок, и вы готовы идти. В iTerm это находится в профиле-> Терминальная вкладка.
raarts
Кажется, есть ошибка в некотором дистрибутиве на основе Debian (включая Ubuntu). Использование fr_FR.UTF-8 приводило к проблемам (и языковой стандарт существовал). Выполнение a locale-gen frпостроит все локали fr (fr_BE, fr_CH и т. Д.) Решит проблему. Возможно, попробуйтеlocale-gen en
Энтони Гиббс

Ответы:

10

первый:

sudo apt-get purge locales

тогда:

sudo aptitude install locales

и знаменитый:

sudo dpkg-reconfigure locales

Это освобождает систему локалей, затем переустанавливает локали и понижает libc6 с 2.19 до 2.13, что является проблемой. Затем снова настраивает локали.

tkjef
источник
У меня точно такая же проблема. Таким образом, благодаря этому ответу, включая репозитории jessie, я мог установить localesбез понижения libc6.
ShgnInc
это не помогло
aexl
8

Если это происходит при SSHing на вашем компьютере, но не на консоли, попробуйте перенастроить ваш ssh-клиент (на вашем локальном компьютере). Например, в Mac OS X отредактируйте / private / etc / ssh_config и закомментируйте

# SendEnv LANG LC_*

Благодаря посту Бредмена на доске объявлений Rasberry Pi .

Адриан Заугг
источник
Этот файл сейчас: / private / etc / ssh / ssh_config
b4d
7

У меня была эта проблема в течение долгого времени, и все обычные советы о dpkg -configure locales, locale-gen и т. Д. Не помогли. Поэтому я немного поигрался с переменными среды, и обнаружил, что система работает с LC_CTYPEпеременной среды! UTF-8не является допустимым значением для него. Установка это en_US.UTF-8исправить.

Чтобы сделать изменение постоянным, я побежал

update-locale LC_CTYPE=en_US.UTF-8

который пишет в /etc/default/locale. Затем перезагрузите систему, чтобы она полностью вступила в силу.

Хунли Лай
источник
К сожалению, это дает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"). *** update-locale: Error: invalid locale settings: LC_CTYPE=en_US.UTF-8
AEXL
2

Я видел это раньше на старых установках Debian, и, несмотря на раздражение, я никогда не видел, чтобы это вызывало проблемы.

Если

  /usr/bin/locale 

отсутствует, попробуйте (как root):

  apt-get install libc-bin

это должно установить libc-bin, предоставив / usr / bin / locale.

Эта строка AcceptEnv в вашем sshd_config довольно стандартна и не должна быть причиной вашей проблемы здесь.

Чад Феллер
источник
libc-bin уже был установлен, поэтому я обновил его и попытался запустить dpkg-reconfigure localesснова. Никакой радости :(
blogjunkie
/ Usr / bin / locale существует сейчас? Если это так, что является результатом: locale -aи что в /etc/default/locale?
Чад Феллер
Содержимое `/ etc / default / locale ': # Файл, сгенерированный update-locale LANG = en_US.UTF-8
blogjunkie
locale -aдает мне: locale: Невозможно установить LC_CTYPE в качестве локали по умолчанию: Нет такого файла или каталога C en_US.utf8 POSIX
blogjunkie
apt утверждал, что libc-bin был установлен, но по крайней мере один файл отсутствовал (/ usr / bin / locale), и переустановка libc-bin, похоже, исправила это. Ты можешь попробовать apt-get install --reinstall locales? Затем, для хорошей меры, попробуйте locale-gen, который восстановит любые локали, которые не закомментированы /etc/locale.gen(у вас должна быть строка как en_US.UTF-8 UTF-8). После этого посмотрите, locale -aработает ли .
Чад Феллер
2

Сделал следующее, как Manoj, но добавил его в # ~ / .bashrc:

export LC_ALL=en_US.utf8
export LANGUAGE=en_US.utf8
Hauge
источник
1

Если вы получаете ошибки, когда ssh'ing обращается к удаленной системе, и не хотите изменять удаленную систему (например, изменяя sshd_config), вы можете сделать следующее в вашей локальной системе (при условии, что bash)

export LC_ALL=en_US
export LANGUAGE=en_US

а потом ssh user@remote

Маной Туласидас
источник
1

На моей новой установке Debian (минимальной) локали полностью отсутствовали. Хотя его установка ( aptitude install locales) и запуск locale-genсделали свое дело. Так что, ребята, делайте, как упоминал Чед Феллер, но localesсначала проверьте, установлен ли пакет .

Ахим Сперлинг
источник
0

Если вы отключили аутентификацию PAM для ssh in /etc/ssh/sshd_config( UsePAM no), ответственная конфигурация в /etc/pam.d/loginне эффективна:

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

Результат: /etc/default/localeкажется, не имеет никакого эффекта.

Таким образом, вы должны настроить свой клиент для отправки переменных LANG или экспорта переменных env в сценарии профиля, например ~/.profile, ~/bashrcи т. Д.

Больше: http://wiki.debian.org/Locale#Standard

Ян-Филипп Лоос
источник
0

Я использовал немецкий VPS и не мог изменить локаль, потому что не было установлено никакого языкового пакета для английского языка.

После установки я смог окончательно поменять локаль

aptitude install language-pack-en
valentt
источник
0

в системах Debian это решит вашу проблему:

apt-get install locales-all

в системах Ubuntu установите специальный языковой пакет, например:

apt-get install language-pack-en

locale-gen en_US.UTF-8

Геза
источник
0

Mac подключается к новой версии Debian 10. Ни один из ответов, найденных в Google Stack Exchange, не помог. Вот что сделал (и был простым и надежным тоже):

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

Запустите это на вашем Debian, и он не позволит подключенному терминалу Mac испортить локали сервера ( подробнее ).

В качестве бонуса это может даже улучшить безопасность сервера.

aexl
источник