Как исправить предупреждение настройки локали от Perl?
когда я запускаю perl
, Я получаю предупреждение:
perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C").
Как это исправить?
30 ответов
ваша ОС не знает о en_US.UTF-8
.
вы не упомянули конкретную платформу, но я могу воспроизвести вашу проблему:
% uname -a OSF1 hunter2 V5.1 2650 alpha % perl -e exit perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LC_ALL = (unset), LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C").
Я предполагаю, что вы использовали ssh для подключения к этому старому хосту с более новой настольной машины. Это распространено для /etc/ssh/sshd_config
содержат
AcceptEnv LANG LC_*
что позволяет клиентам распространять в новые сеансы значения этих переменных среды.
предупреждение дает вам подсказку о том, как уничтожить его, если вы не требуется полная локаль:
% env LANG=C perl -e exit %
или с Баша:
$ LANG=C perl -e exit $
для постоянного исправления выберите один из
- на старом хосте установите
LANG
переменная окружения в файле инициализации оболочки. - измените свою среду на стороне клиента,например, а не
ssh hunter2
используйте командуLANG=C ssh hunter2
. - если у вас есть права администратора, остановите ssh от отправки переменных среды комментируя
SendEnv LANG LC_*
строка местные . (Спасибо ответ. См.ошибка 1285 для OpenSSH для больше.)
вот как это решить на Mac OS Lion (10.7) или Cygwin (Windows 10):
добавьте следующие строки в ваш bashrc или bash_profile на главной машине:
# Setting for the new UTF-8 terminal support in Lion
export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
Если вы используете zsh, отредактируйте zshrc:
# Setting for the new UTF-8 terminal support in Lion
LC_CTYPE=en_US.UTF-8
LC_ALL=en_US.UTF-8
Если вы создаете rootfs с помощью debootstrap, вам нужно будет создать локали. Вы можете сделать это, выполнив:
# (optional) enable missing locales
sudo nano /etc/locale.gen
# then regenerate
sudo locale-gen
этот совет исходит от, https://help.ubuntu.com/community/Xen
это обычно означает, что вы неправильно настроили локали в своем Linux-боксе.
в Debian или Ubuntu это означает, что вам нужно сделать
$ sudo locale-gen $ sudo dpkg-reconfigure locales
см. также Man locale-gen.
использование:
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_TYPE=en_US.UTF-8
Он работает Debian. Не знаю почему , но locale-gen не дал результатов.
важно! Это временное решение. Он должен быть запущен для каждого сеанса.
только для пользователей macOS & Mac OS X
я получал то же самое предупреждение при использовании Git
чтобы разрешить это предупреждение убрать на Set locale environment variable on startup
опция и перезагрузите терминал. Ниже снимок экрана представляет мои настройки терминала.
Это простое исправление в Ubuntu. Вы должны генерировать локали с нуля, выполнив следующие команды из командной строки:
sudo locale-gen en_US en_US.UTF-8
sudo dpkg-reconfigure locales
это должно создать локали, а затем повторно настроить их.
теперь я использую это:
$ cat /etc/environment
...
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
затем выйдите из сеанса SSH и войдите снова.
ответ:
только это мне помогло:
$ locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_ALL=
$ sudo su
# export LANGUAGE=en_US.UTF-8
# export LANG=en_US.UTF-8
# export LC_ALL=en_US.UTF-8
# locale-gen en_US.UTF-8
Generating locales...
en_US.UTF-8... up-to-date
Generation complete.
# dpkg-reconfigure locales
Generating locales...
en_AG.UTF-8... done
en_AU.UTF-8... done
en_BW.UTF-8... done
en_CA.UTF-8... done
en_DK.UTF-8... done
en_GB.UTF-8... done
en_HK.UTF-8... done
en_IE.UTF-8... done
en_IN.UTF-8... done
en_NG.UTF-8... done
en_NZ.UTF-8... done
en_PH.UTF-8... done
en_SG.UTF-8... done
en_US.UTF-8... up-to-date
en_ZA.UTF-8... done
en_ZM.UTF-8... done
en_ZW.UTF-8... done
Generation complete.
# exit
$ 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
добавление следующего в /etc/environment
Исправлена проблема для меня на Debian и Ubuntu (конечно, изменить, чтобы соответствовать локали, которые вы хотите использовать):
LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
LC_TYPE=en_US.UTF-8
на Debian после долгих поисков в своем деле.
первый:
sudo apt-get purge locales
затем:
sudo aptitude install locales
и знаменитое:
sudo dpkg-reconfigure locales
это устраняет систему локалей, затем повторно устанавливает локали и понижает libc6 с 2.19 до 2.13, что является проблемой. Затем снова настраивает локали.
Если вы используете Mac OS X v10.10 (Yosemite) или выше для подключения к вашему серверу Linux вы можете попробовать следующие шаги.
сохраните файл/etc/ssh / sshd-config original
-
наденьте~/.файл
export LANG="en_US" export LC_ALL=$LANG.UTF-8
-
Run
dpkg-reconfigure locales
и выбрать "язык.UTF-8"
вам нужно настроить locale соответствующим образом в /etc/default/locale
, логаут, логин и затем выполнить команды
root@host:~# echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale
root@host:~# exit
local-user@local:~$ ssh root@host
root@host:~# locale-gen en_US.UTF-8
root@host:~# dpkg-reconfigure locales
sudo nano /etc/locale.gen
раскомментируйте локали, которые вы хотите использовать (например,en_US.UTF-8 UTF-8
):
sudo /usr/sbin/locale-gen
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_ALL to default locale: No such file or directory
устранение:
попробуйте это (uk_UA.UTF-8 моя текущая локаль. Напишите свой язык, например язык.UTF-8 !)
sudo locale-gen uk_UA.UTF-8
и этого.
sudo dpkg-reconfigure locales
для Ubuntu используйте это,
#export LANGUAGE=en_US.UTF-8
#export LC_ALL=en_US.UTF-8
#export LANG=en_US.UTF-8
#export LC_TYPE=en_US.UTF-8
работал для меня.
для меня я исправляю эту ошибку при редактировании .файл bashrc добавить экспорт. Добавить после первоначальных комментариев.
Добавить язык suport.
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_TYPE=en_US.UTF-8
Вид Regads,
после принятого ответа:
LANG=c ssh hunter2.
значение lc_all=C в СШ hunter2
на стороне клиента сделал трюк для меня.
С zsh ohmyzsh я добавил Это в .zshrc
:
# You may need to manually set your language environment
LANGUAGE=en_US.UTF-8
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_ALL=en_US.UTF-8
путем удаления строки export LANG=en_US.UTF-8
открыл новую вкладку и SSHed В, работал для меня:)
как всегда, дьявол в деталях...
On Mac OS X v10.7.5 (Лев), чтобы исправить некоторые Джанго ошибки, по моему ~/.bash_profile
Я:
export LANG=en_EN.UTF-8
export LC_COLLATE=$LANG
export LC_CTYPE=$LANG
export LC_MESSAGES=$LANG
export LC_MONETARY=$LANG
export LC_NUMERIC=$LANG
export LC_TIME=$LANG
export LC_ALL=$LANG
и, в свою очередь, я долгое время получал это предупреждение при использовании Perl.
мой плохой! Как я понял гораздо позже, моя система en_US.UTF-8
!
Я исправил это, просто изменив
export LANG=en_EN.UTF-8
to
export LANG=en_US.UTF-8
для всех, кто подключается к DigitalOcean или другому поставщику облачного хостинга из iTerm2.приложение на MacOS High Sierra и получение этой ошибки по некоторым командам:
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 a fallback locale ("en_US.UTF-8").
это исправило проблему для меня:
Я знаю, что этот поток старая, но может кто-то найдет это полезным. Я знаю, как это может раздражать.
добавить недостающие локали .файл
echo "export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8">>~/.bash_profile
затем источник ваш .файл
source ~/.bash_profile
в моем случае, это был выход:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = "ro_RO.UTF-8",
LC_ADDRESS = "ro_RO.UTF-8",
....
решение:
sudo locale-gen ro_RO.UTF-8
ssh
перезаписывает переменные локали LC по умолчанию. См./etc/ssh/sshd_config
:
AcceptEnv LANG LC_*
поэтому, возможно, вам нужно установить эти переменные в локальной оболочке.
Если вас не волнует проблема языка, вы можете установить PERL_BADLANG=0
. Конечно,это может привести к неправильной локализации.
для меня, on Ubuntu 16.04 (Xenial Xerus) сработало следующее:
root@host:~#locale-gen en_GB.UTF-8
root@host:~#localectl set-locale LANG=en_GB.UTF-8,LC_ALL=en_GB.UTF-8
перезагрузите...
все предыдущие ответы неверны. Сообщение ясно-отсутствует локаль. Решение заключается в добавлении соответствующей локали. Вы делаете это, редактируя /etc/locale.файл gen, удалите знак # перед языковым стандартом, который сообщается как отсутствующий, а затем введите команду:
$ sudo locale-gen
это фактически создаст локали, указанные в /etc / locale.Gen и поэтому сообщение не будет показано.
в моем случае, с debian8.6, мне пришлось изменить настройки в:
/etc/ssh/ssh_config
на #AcceptEnv LANG LC_*
и
sshd_config
на #SendEnv LANG LC_*
затем перезапустите службу ssh.
наконец, сделал
locale-gen en_US.UTF-8
и dpkg-reconfigure locales
в Arch Linux с помощью клавиатуры / локали Великобритании у меня была следующая ошибка:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_US.utf8"
экспорт моих локалей в
/etc/profile
не починили.однако я исправил это, отредактировав
/etc/locale.gen
и включения
theen_US.utf8
locale, чтоperl
ожидается, что найти и под управлениемlocal-gen
.
(я использую pac-manager, который использует целую кучу perl
модули из AUR так переустановка perl
в моем конкретном случае было бы неприятно)
добавление правильной локали в ~/.bashrc
, ~/.bash_profile
, /etc/environment
и как будет решать проблему, однако это не рекомендуется, так как он переопределяет параметры из /etc/default/locale
, что в лучшем случае сбивает с толку и может привести к тому, что локали не будут применяться последовательно в худшем случае.
вместо этого следует редактировать /etc/default/locale
непосредственно, что может выглядеть примерно так:
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE=en_US