Как исправить предупреждение о настройке локали от 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 box.
на 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
чтобы устранить это предупреждение убрать the
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"
вам нужно настроить локаль соответствующим образом в
/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 моя текущая локаль. Напишите свою локаль, например en_US.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 ssh 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
до
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
. Конечно, это может привести к неправильной локализации.
для меня, на 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 file, удалите знак # перед тем, как локаль будет объявлена отсутствующей, а затем выполните команду:
$ 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
и включения
элементen_US.utf8
локаль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