I я видел это раньше при установке более старых версий Debian, и, хотя это меня раздражает, я никогда не видел, чтобы это вызывало проблемы.
Если
/usr/bin/locale
отсутствует, попробуйте (как root):
apt-get install libc-bin
, который должен установить libc-bin, предоставление /usr/bin/locale.
Эта строка AcceptEnv в вашем sshd_config довольно стандартна и не должна быть причиной вашей проблемы здесь.
Если вы получаете ошибки во время ssh'ing к удаленной системе и не хотите изменять удаленную систему (например, путем изменения sshd_config), вы можете сделать следующее в вашей локальной системе (при условии, что bash)
export LC_ALL=en_US
export LANGUAGE=en_US
, а затем ssh user @ remote
Выполнил следующее, как Manoj, но добавил его в # ~ / .bashrc:
export LC_ALL=en_US.utf8
export LANGUAGE=en_US.utf8
В моей свежей установке Debian (минимальные) локали полностью отсутствовали. Однако установка ( aptitude install locales
) и запуск locale-gen
сделали свое дело. Итак, ребята, сделайте то, что упомянул Чад Феллер, но сначала проверьте наличие пакета locales
.
У меня была эта проблема долгое время, и все обычные советы по поводу dpkg-reconfigure locales, locale-gen и т. Д. Не помогли. Итак, я немного поигрался с переменными окружения и обнаружил, что система работает с переменной окружения LC_CTYPE
! UTF-8
не является допустимым значением. Установка на en_US.UTF-8
исправила его.
Чтобы сделать изменение постоянным, я запустил
update-locale LC_CTYPE=en_US.UTF-8
, который записывает в / etc / default / locale
. Затем перезагрузите систему, чтобы изменения вступили в силу полностью.
Если вы отключили аутентификацию PAM для ssh в / etc / ssh / sshd_config
( UsePAM no
) в соответствующей конфигурации в /etc/pam.d/login
не действует:
требуется сеанс pam_env.so readenv = 1 envfile = / etc / default / locale
Результат: / etc / default / locale
, похоже, не действует.
Таким образом, вы должны настроить свой клиент для отправки переменных LANG или экспорта переменных env в сценарии профиля, например ~ / .profile
, ~ / bashrc
и т. д.
Подробнее: http://wiki.debian.org/Locale#Standard
Если это происходит при подключении SSH к вашему серверу, но не на консоли, попробуйте перенастроить свой ssh-клиент (на вашем локальном компьютере). В Mac OS X, например, отредактируйте / private / etc / ssh_config и закомментируйте
# SendEnv LANG LC_*
Благодаря сообщению bredman на доске объявлений Rasberry Pi .
ni akọkọ:
sudo apt-get purge locales
lẹhinna:
sudo aptitude install locales
ati olokiki:
sudo dpkg-reconfigure locales
Eyi n yọ eto awọn agbegbe kuro, lẹhinna tun tun fi awọn agbegbe ati awọn downgrades libc6 sori ẹrọ lati 2.19 si 2.13 eyiti o jẹ ọrọ naa . Lẹhinna tunto awọn agbegbe lẹẹkansi.
Я использовал немецкий VPS и не мог изменить языковой стандарт, потому что не был установлен английский языковой пакет.
После установки я наконец смог изменить языковой стандарт
aptitude install language-pack-en
в системах Debian это решит вашу проблему:
apt-get install locales-all
в системах Ubuntu установите определенный языковой пакет, например:
apt-get install language-pack-ru
locale-gen en_US.UTF-8
Mac подключается к новой установке Debian 10. Ни один из ответов, найденных в Google по всему Stack Exchange, не помог. Вот что получилось (и тоже было просто и надежно):
sed -i "s/^AcceptEnv/#AcceptEnv/g" /etc/ssh/sshd_config
Запустите это на своем компьютере с Debian, и это предотвратит исправление локалей сервера подключающимся терминалом Mac (подробнее).
В качестве бонуса это может даже повысить безопасность сервера.
У меня была эта проблема, которая очень беспокоила и спамила окно терминала. Как я видел, все решения связаны с пакетом locales и настройками, но основной причиной является SSH!
Удаленный сервер Linux, только что установленный Debian Buster жалуется:
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
LANGUAGE=en_US:en
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=
Я подключаюсь к удаленным системам из терминала MacOS, который имеет настройку:
uname -a
Darwin mac-pro.lan 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64 x86_64
set | grep LC_
LC_CTYPE=UTF-8
Вот оно! Теперь отредактируйте /etc/ssh/sshd_config и закомментируйте сквозную передачу переменной LC_:
# Allow client to pass locale environment variables
#AcceptEnv LANG LC_*
Перезапустите демон ssh:
systemctl restart sshd
выйдите из системы, снова войдите в систему, и vualia:
locale
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.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=
Не беспокойтесь о каждом один сервер, просто исправьте свою сторону:
echo "export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8">>~/.bash_profile
если вы используете zsh, используйте вместо этого ~/.zprofile.
Еще один вариант — использовать команду grep для поиска определенных локалей.
## For example, search for English India ##
grep en_IN /etc/locale.gen
## Search for English US ##
grep en_US /etc/locale.gen
## Search for Japanese ##
grep ja_JP /etc/locale.gen
затем,
felipe@SDF-1:~$ tail -f /etc/locale.gen
# zh_HK BIG5-HKSCS
# zh_HK.UTF-8 UTF-8
# zh_SG GB2312
# zh_SG.GBK GBK
# zh_SG.UTF-8 UTF-8
# zh_TW BIG5
# zh_TW.EUC-TW EUC-TW
# zh_TW.UTF-8 UTF-8
# zu_ZA ISO-8859-1
# zu_ZA.UTF-8 UTF-8
^C
felipe@SDF-1:~$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US.utf8
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=en_US.utf8
felipe@SDF-1:~$
также, помогло мне это:
felipe@SDF-1:~$ sudo locale-gen en_US.UTF-8
Generating locales (this might take a while)...
Generation complete.
felipe@SDF-1:~$ sudo localedef -i en_US -f UTF-8 en_US.UTF-8
felipe@SDF-1:~$ sudo export LANGUAGE=en_US.UTF-8
sudo: export: command not found
felipe@SDF-1:~$ sudo export LANG=en_US.UTF-8
sudo: export: command not found
felipe@SDF-1:~$ export LANGUAGE=en_US.UTF-8
felipe@SDF-1:~$ export LANG=en_US.UTF-8
felipe@SDF-1:~$ export LC_ALL=en_US.UTF-8
-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8): No such file or directory
felipe@SDF-1:~$ sudo locale-gen en_US.UTF-8
Generating locales (this might take a while)...
Generation complete.
felipe@SDF-1:~$ export LC_CTYPE=en_US.UTF-8
felipe@SDF-1:~$ export LC_ALL=en_US.UTF-8
-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
felipe@SDF-1:~$
felipe@SDF-1:~$
felipe@SDF-1:~$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.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=en_US.UTF-8
felipe@SDF-1:~$
Я только что добрался до чего-то другого:
Я должен добавить тот факт, что у меня были те же проблемы, по-прежнему. Но затем я попробовал это, и это было исправлено:
Добавил его в
#~/.bashrc:
export LC_ALL=en_US.utf8
export LANGUAGE=en_US.utf8
, а затем перезапустил демон SSH:
systemctl restart sshd