Как исправить предупреждение о настройке языкового стандарта на Perl?

Когда я запускаю perl , я получаю предупреждение:

  perl: warning: Не удалось установить локаль.
 perl: warning: Пожалуйста, проверьте, что ваши настройки языка:
     LANGUAGE = (unset),
     LC_ALL = (unset),
     LANG = "en_US.UTF-8"
 поддерживаются и устанавливаются в вашей системе.
 perl: warning: Возврат к стандартному языку («C»). 

Как это исправить?

Ваша ОС не знает об en_US.UTF-8 .

Вы не упомянули о конкретной платформе, но я могу воспроизвести вашу проблему:

  % uname -a
 OSF1 hunter2 V5.1 2650 alpha
 % perl -e exit
 perl: warning: Не удалось установить локаль.
 perl: warning: Пожалуйста, проверьте, что ваши настройки языка:
     LC_ALL = (unset),
     LANG = "en_US.UTF-8"
     поддерживаются и устанавливаются в вашей системе.
 perl: warning: Возврат к стандартному языку («C»). 

Я предполагаю, что вы использовали ssh для подключения к этому более старому хосту с более новой настольной машины. Обычно для /etc/ssh/sshd_config содержится

 AcceptEnv LANG LC_* 

который позволяет клиентам распространять на новые сессии значения этих переменных окружения.

Предупреждение дает вам подсказку о том, как подавить его, если вы не требуете полного языкового стандарта:

  % env LANG = C perl -e exit
 % 

или с bash:

  $ LANG = C perl -e exit
 $ 

Для постоянного исправления выберите один из

  1. На старшем узле установите переменную среды LANG в файле инициализации вашей оболочки.
  2. Измените среду на стороне клиента, например , вместо ssh hunter2 , используйте команду LANG=C ssh hunter2 .
  3. Если у вас есть права администратора, остановите ssh от отправки переменных среды, комментируя SendEnv LANG LC_* в локальном /etc/ssh/ssh_config . (Спасибо за этот ответ . См. Bug 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

Использование:

 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 не имел результатов.

Важный! Это временное решение. Он должен запускаться для каждой сессии.

Обычно это означает, что вы неправильно настроили локали в своем Linux-окне.

В Debian или Ubuntu это означает, что вам нужно сделать

  $ sudo locale-gen
 $ sudo dpkg-reconfigure locales 

См. Также man 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, вы можете попробовать выполнить следующие действия.

  1. Сохраните файл / etc / ssh / sshd-config original

  2. Наденьте свой файл ~ / .bash_profile

     export LANG="en_US" export LC_ALL=$LANG.UTF-8 
  3. Бег

     dpkg-reconfigure locales 

    И выберите “en_US.UTF-8”

Вам необходимо настроить локаль соответствующим образом в /etc/default/locale , logout, login , а затем запустить регулярные команды

 [email protected]:~# echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale [email protected]:~# exit [email protected]:~$ ssh [email protected] [email protected]:~# locale-gen en_US.UTF-8 [email protected]:~# dpkg-reconfigure locales 
 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 
 sudo nano /etc/locale.gen 

Раскомментируйте локали, которые вы хотите использовать (например, en_US.UTF-8 UTF-8 ):

Затем выполните:

 sudo /usr/sbin/locale-gen 

Источник: http://people.debian.org/~schultmc/locales.html

Для 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, добавляя экспорт. Добавить после первоначальных комментариев.

Добавьте поддержку языка.

 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 

Добрые регады,

После принятого ответа:

LANG = C ssh hunter2.

LC_ALL = C ssh hunter2

на стороне клиента сделал трюк для меня.

Добавьте LC_ALL="en_GB.utf8" в /etc/environment и перезагрузитесь. Это все.

С 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 строки export LANG=en_US.UTF-8

Открыл новую вкладку и SSHed, работал для меня 🙂

Как всегда, дьявол находится в деталях …

В Mac OS X v10.7.5 (Lion), чтобы исправить некоторую ошибку Django , в моем ~/.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.app на 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"). 

Это поставило проблему для меня:

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

Я знаю, что эта ветка устарела, но, возможно, кто-то найдет ее полезной. Я знаю, как это раздражает.

Добавить отсутствующие локали в .bash_profile

 echo "export LANGUAGE=en_US.UTF-8 export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8">>~/.bash_profile 

Затем отправьте свой .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 , вы можете установить PERL_BADLANG=0 . Конечно, это может привести к неправильной локализации.

Для меня на Ubuntu 16.04 (Xenial Xerus) работало:

 [email protected]:~#locale-gen en_GB.UTF-8 [email protected]:~#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 это, отредактировав /etc/locale.gen а также включив
    локаль en_US.utf8 которую perl ожидал найти и запустить local-gen .

(Я использую pac-manager, который использует целую кучу модhive 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 
  • Каков наилучший способ открыть и прочитать файл в Perl?
  • Perl для сопоставления с регулярными выражениями в терминале?
  • Как получить полный путь к скрипту Perl, который выполняется?
  • Как создается построение Perl's @INC? (ака Какие способы повлиять на поиск модhive Perl?)
  • Какое регулярное выражение может соответствовать последовательностям одного и того же символа?
  • Как я могу запускать системные команды Perl в фоновом режиме?
  • Флаги Perl -pe, -pi, -p, -w, -d, -i, -t?
  • Можно ли заменить несколько элементов в одном регулярном выражении в VIM или Perl?
  • Как я могу разобрать CSV в Perl с регулярным выражением?
  • В Perl, как мне изменить, удалить или вставить строку в файл или добавить к началу файла?
  • Perl 5.20 и судьба умного соответствия и заданного-когда?
  • Interesting Posts

    Outlook 2007 – Не удается запустить Outlook – не удается открыть окно Outlook

    Обновление пользовательского интерфейса из разных streamов в JavaFX

    Как я могу вернуться к созданию сборки окна 10 без потери моей программы

    Как добавить TextView в LinearLayout динамически в Android?

    Как переопределить метод добавления List на C #?

    Excel: поиск списка строк в определенной строке с использованием формул массива?

    Вызов метода child из родительского

    Как добавить новую колонку в базу данных SQLite для Android?

    Количество файлов из папки

    Использование PDFBox для записи кодированных строк UTF-8 в PDF-файл

    Есть ли что-то вроде «универсального приемника 2,4 ГГц» для беспроводных периферийных устройств?

    Добавление закладок в Microsoft Edge вручную

    Maven2: Отсутствует артефакт, но банки на месте

    При создании POJO в Firebase вы можете использовать ServerValue.TIMESTAMP?

    Какова стоимость выполнения виртуального метода в classе C ++?

    Давайте будем гением компьютера.