จะแก้ไขคำเตือนการตั้งค่าภาษาจาก Perl ได้อย่างไร


596

เมื่อฉันวิ่งperlฉันได้รับคำเตือน:

perl: คำเตือน: การตั้งค่าภาษาล้มเหลว
perl: คำเตือน: โปรดตรวจสอบว่าการตั้งค่าภาษาของคุณ:
    LANGUAGE = (ไม่ได้ตั้งค่า)
    LC_ALL = (ไม่ได้ตั้งค่า)
    LANG = "en_US.UTF-8"
ได้รับการสนับสนุนและติดตั้งบนระบบของคุณ
perl: คำเตือน: การย้อนกลับไปยังโลแคลมาตรฐาน ("C")

ฉันจะแก้ไขได้อย่างไร


เกิดอะไรขึ้นเมื่อคุณตรวจสอบการตั้งค่าภาษาเช่นข้อความแจ้งข้อผิดพลาด
brian d foy

3
แทนที่จะติดตั้ง locale คุณสามารถเปลี่ยน locale ได้ ในกล่องอูบุนตูของฉันทำได้โดยการแก้ไขโดยผู้ใช้คนเดียว~/.pam_environment
Janus Troelsen

สำหรับ ODROID-C1 ที่ใช้งาน Ubuntu ปัญหานี้เป็นไฟล์ ~ / .pam_environment ตัวแปรบางตัวเป็น es_US.UTF-8 แทนที่จะเป็น en_US.UTF-8 ขอบคุณ.
f1vefour

ฉันได้รับสิ่งนี้จาก Cygwin \ Babun เฉพาะติดตั้งของ Perl ได้รับการแก้ไข
Lucas Soares

คำตอบ:


449

en_US.UTF-8ระบบปฏิบัติการของคุณไม่ทราบเกี่ยวกับ

คุณไม่ได้พูดถึงแพลตฟอร์มที่เฉพาะเจาะจง แต่ฉันสามารถทำให้เกิดปัญหาของคุณได้:

% uname -a
OSF1 hunter2 V5.1 2650 อัลฟา
% perl -e exit
perl: คำเตือน: การตั้งค่าภาษาล้มเหลว
perl: คำเตือน: โปรดตรวจสอบว่าการตั้งค่าภาษาของคุณ:
    LC_ALL = (ไม่ได้ตั้งค่า)
    LANG = "en_US.UTF-8"
    ได้รับการสนับสนุนและติดตั้งบนระบบของคุณ
perl: คำเตือน: การย้อนกลับไปยังโลแคลมาตรฐาน ("C")

ฉันเดาว่าคุณใช้ ssh เพื่อเชื่อมต่อกับโฮสต์ที่เก่ากว่านี้จากเครื่องเดสก์ท็อปรุ่นใหม่ เป็นเรื่องปกติที่/etc/ssh/sshd_configจะมี

AcceptEnv LANG LC_*

ซึ่งอนุญาตให้ไคลเอนต์เผยแพร่ค่าของตัวแปรสภาพแวดล้อมเหล่านั้นไปยังเซสชันใหม่

คำเตือนจะให้คำแนะนำเกี่ยวกับวิธีการบีบหากคุณไม่ต้องการใช้ภาษาเต็ม:

% env LANG = C perl -e exit
%

หรือทุบตี:

$ LANG = C perl -e exit
$ 

สำหรับการแก้ไขแบบถาวรให้เลือกข้อใดข้อหนึ่ง

  1. บนโฮสต์ที่เก่ากว่าให้ตั้งค่าLANGตัวแปรสภาพแวดล้อมในไฟล์เริ่มต้นของเชลล์
  2. การปรับเปลี่ยนสภาพแวดล้อมของคุณบนฝั่งไคลเอ็นต์เช่นแทนที่จะใช้คำสั่งssh hunter2LANG=C ssh hunter2
  3. หากคุณมีสิทธิ์ของผู้ดูแลระบบให้หยุด ssh จากการส่งตัวแปรสภาพแวดล้อมโดยการแสดงความคิดเห็นSendEnv LANG LC_*บรรทัดในไฟล์ท้องถิ่น /etc/ssh/ssh_config(ขอบคุณคำตอบนี้ดูBug 1285สำหรับ OpenSSH มากขึ้น)

22
ขอบคุณ! ฉันมีข้อความแสดงข้อผิดพลาดนี้เมื่อเชื่อมต่อกับ git กับเซิร์ฟเวอร์ของฉัน หลังจากเพิ่ม de_CH.UTF-8 (ไม่รองรับที่นั่น แต่ใช้ภายในเครื่อง) พร้อมกับdpkg-reconfigure localesข้อความจะหายไป
Simon A. Eugster

82
ฉันมีปัญหานี้มานานแล้ว ... นำ "AcceptEnv LANG LC_ *" ออกจาก sshd_config ในที่สุดก็แก้ปัญหาได้ ขอบคุณสำหรับคำใบ้!
madc

2
@Greg Bacon จะไม่มีกรณีที่คุณต้องการตั้งค่าตัวแปรสภาพแวดล้อมของระบบให้กว้างตัวอย่างเช่นการสร้างไฟล์ / etc / environment help.ubuntu.com/community/…
fraxture

25
@ HermannIngjaldsson อย่างน้อยใน Ubuntu (12.10) ไม่จำเป็นต้องรีบูตเซิร์ฟเวอร์ (หลังจากลบ "AcceptEnv LANG LC_ *") ฉันเพิ่งโหลด ssh config ใหม่: service ssh reloadซึ่งใช้เวลาเพียงเสี้ยววินาทีและไม่ทำให้เซสชัน ssh ปัจจุบันสิ้นสุดลง
noamtm

3
ผนวก 'export LC_ALL = C' แล้ว 'source ~ / .bashrc' ที่ระบบไคลเอ็นต์เพื่อแก้ปัญหา
EffectiveMatrix

476

นี่คือวิธีแก้ไขบน 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

6
ขอบคุณฉันค้นหาวิธีแก้ปัญหานี้มาเป็นเวลานานและฉันคิดเสมอว่าเป็นปัญหาในการกำหนดค่าเซิร์ฟเวอร์ Ubuntu ของฉันและดูเหมือนว่าไม่มีวิธีแก้ปัญหาที่ช่วยได้ (ทุกสิ่งที่ dkpg-reconfigure สิ่งต่าง ๆ (
Teemu Kurppa)

5
เพราะLC_ALLเขียนทับตัวแปรอื่น ๆ ทั้งหมดที่ฉันต้องการตั้งค่อนข้างและตัวแปรของแต่ละบุคคลเช่นLANG=de_AT.UTF-8 LC_MESSAGES=en_US.UTF-8หากไม่ได้ตั้งค่าตัวแปรตัวแปรจะกลับไปLANGเป็น คุณยังสามารถเช่น เพื่อบังคับให้ถอยกลับไปunset LC_CTYPE LANG
David

4
การวางบรรทัดเหล่านั้นใน. bashrc ไม่ทำงาน แต่ bash_profile แก้ไขได้! ฉันต้องสร้างไฟล์
Hermann Ingjaldsson

5
วางบรรทัดเหล่านี้ในการ~/.bashrcแก้ไขสำหรับฉัน ... จากนั้นจะต้องโหลดใหม่โดยใช้source ~/.bashrc... Thnks <3
Enissay

5
ขอบคุณสิ่งนี้ใช้ได้ดีกับ ZSH และปลั๊กอิน oh-my-zsh ภายใต้ Mac OS X El Capitan ที่ด้านล่างของ ~ / .zshrc: LC_CTYPE = en_US.UTF-8 LC_ALL = en_US.UTF-8
Valerio Schiavoni

207

หากคุณกำลังสร้าง rootfs โดยใช้ debootstrap คุณจะต้องสร้างสถานที่ คุณสามารถทำได้โดยการเรียกใช้:

# (optional) enable missing locales
sudo nano /etc/locale.gen

# then regenerate
sudo locale-gen

เคล็ดลับนี้มาจากhttps://help.ubuntu.com/community/Xen


28
นี่คือการแก้ไขที่แท้จริงสำหรับฉัน
Afriza N. Arief

5
locale-gen ไม่มีข้อโต้แย้งใด ๆ (ใน Debian เสถียรอย่างน้อย) แต่ให้แก้ไข /etc/locale.gen เพื่อยกเลิกการใส่เครื่องหมายบอกตำแหน่งที่คุณต้องการจากนั้นเรียกใช้ sudo locale-gen
Sam Watkins

2
จับจ้องที่Ubuntu Server
Paschalis

5
ใน Debian คุณอาจต้องทำ$ echo en_US UTF-8 >> /etc/locale.genก่อน
akhmed

1
ใน Gentoo (อย่างน้อย) locale-genไม่รับการโต้แย้ง /etc/locale.genมันอ่านจาก
Pistos

142

ใช้:

export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8

การทำงานสำหรับDebian ฉันไม่รู้ว่าทำไม - แต่ locale-gen ไม่มีผลลัพธ์

สิ่งสำคัญ! มันเป็นทางออกชั่วคราว มันจะต้องมีการทำงานสำหรับแต่ละเซสชั่น


13
อันนี้ใช้ได้สำหรับฉัน ฉันเพิ่งใส่ลงใน.bashrcไฟล์ของฉัน
Anirudh Ramanathan

2
ทำงานให้ฉันด้วย ฉันเพียงแค่ต้องตั้งค่าสองค่า (LANGUAGE และ LC_ALL) ที่ไม่ปรากฏในคำเตือน Perl
laurent

2
บน Debian local-genเฉพาะโลแคลกระบวนการที่ไม่ใส่/etc/local.genหมายเหตุ คุณอาจต้องทำecho en_US UTF-8 >> /etc/locale.genก่อน
akhmed

สิ่งนี้ใช้ได้กับฉันใน Elementary OS Freaya (Ubuntu)
valkirilov

1
LC_ C TYPE อาจเป็นอย่างไร
mixel

139

โดยทั่วไปหมายความว่าคุณไม่ได้ตั้งค่าภาษาในกล่อง Linux อย่างเหมาะสม

บน Debian หรือ Ubuntu หมายความว่าคุณต้องทำ

$ sudo locale-gen
$ sudo dpkg- กำหนดค่าตำแหน่งใหม่

ดูยังคนสถาน-Gen


30
ไม่สามารถแก้ไขปัญหาได้ที่นี่
Somatik

6
ตำแหน่ง dpkg-reconfigure - แก้ไขปัญหาสำหรับฉันเดเบียน 7.1
newUserName ที่นี่

4
dpkg-reconfigure locales ล้มเหลวในตัวเองด้วยข้อความแสดงข้อผิดพลาด perl locale เดียวกันที่หนึ่งพยายามแก้ไขในสถานที่แรก !!!!
matteo

10
สิ่งนี้ใช้ได้กับฉันใน Ubuntu 14.04 แม้ว่าฉันจะต้องเพิ่มสถานที่ที่หายไปก่อนด้วยsudo locale-gen es_UY.UTF-8
alf

2
@matteo เฉพาะครั้งแรกก่อนที่จะแก้ไขข้อผิดพลาด ลองอีกครั้งและควรได้รับการแก้ไข
Zero3

92

สำหรับผู้ใช้ macOS และ Mac OS X เท่านั้น

ฉันได้รับคำเตือนแบบเดียวกันขณะใช้Git

หากต้องการแก้ไขคำเตือนนี้ให้ยกเลิกการSet locale environment variable on startupเลือกตัวเลือกแล้วรีสตาร์ทเครื่องของคุณ ภาพหน้าจอด้านล่างแสดงถึงการตั้งค่าเครื่องของฉัน

ป้อนคำอธิบายรูปภาพที่นี่


3
ว้าวง่ายและแก้ไขปัญหาของฉัน! ขอบคุณ!
Michal

3
ฉันลองคนอื่นทั้งหมด แต่อันนี้ทำเพื่อฉัน ฉันใช้ iTerm และมีตัวเลือกการเข้ารหัสอักขระเหมือนกัน
Michael Morrison

2
น่าเสียดายที่ตัวแบ่งนี้ ZSH (แท็บหยุดทำงาน)
คริสเตียน

1
ทั้งหมดนี้เป็นเคล็ดลับสำหรับ Mac OS อย่างไรก็ตามการเริ่มต้นนี้เกิดขึ้นกับฉันทันทีหลังจากอัพเกรดเป็น macOS Sierra และนี่ก็แก้ไขปัญหานี้ให้ฉันได้
เปาโล Malvar

1
นี่เป็นการแก้ไขปัญหาของฉัน มันเริ่มที่จะเกิดขึ้นกับฉันหลังจากอัปเดตเป็น Mac OS X High Sierra จาก Sierra
Lucian Irimie

36

เป็นการแก้ไขที่ง่ายใน Ubuntu คุณต้องสร้าง Locales ตั้งแต่เริ่มต้นโดยรันคำสั่งต่อไปนี้จากบรรทัดคำสั่ง:

sudo locale-gen en_US en_US.UTF-8
sudo dpkg-reconfigure locales

สิ่งนี้ควรสร้างโลแคลจากนั้นกำหนดค่าอีกครั้ง


มันใช้งานได้ดีกับฉันแม้ใช้pt_BR pt_BR.UTF-8- ขอบคุณ
Marcos Freitas

29

การเพิ่มรายการต่อไปนี้เพื่อ/etc/environmentแก้ไขปัญหาสำหรับฉันใน Debian และ Ubuntu (แน่นอนให้ปรับเปลี่ยนให้ตรงกับภาษาที่คุณต้องการใช้):

LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8

7
.. ผมมีคำเตือนที่บอกว่าการตั้งค่าสถานที่ในการเลิกและแทนที่จะควรจะตั้งอยู่ใน/etc/environment /etc/default/localeทั้งสองดูเหมือนจะทำงานได้ในตอนนี้
joscarsson

ควรจะเป็นLC_CTYPE
aexl

25

ตอนนี้ฉันใช้สิ่งนี้:

$ 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

มันใช้งานได้ดีสำหรับฉันบน Ubuntu 15.04 ขอบคุณมาก
Goke Obasa

22

บนเดเบียนหลังจากการค้นหามากสิ่งนี้ได้หลอกลวง

ครั้งแรก:

sudo apt-get purge locales

แล้ว:

sudo aptitude install locales

และมีชื่อเสียง:

sudo dpkg-reconfigure locales

สิ่งนี้จะทำให้ระบบโลแคลติดตั้งจากนั้นติดตั้งโลแคลและปรับลดระดับ libc6 ใหม่จาก 2.19 เป็น 2.13 ซึ่งเป็นปัญหา จากนั้นกำหนดค่าตำแหน่งที่ตั้งอีกครั้ง


4
dpkg-reconfigure localesคือทั้งหมดที่จำเป็น sudoถ้าคุณเป็นคนประเภท sudo หรือทำตามที่รูท จากนั้นเลือกโลแคลของคุณตามสิ่งที่คุณมีในสภาพแวดล้อมเชลล์
mknaf

6
ตำแหน่ง dpkg- กำหนดค่าใหม่ควรเป็นสิ่งที่จำเป็น หลังจากที่คุณลองทำ 100 ครั้งแล้วดูไปทั่วอินเทอร์เน็ตและนั่นคือทั้งหมดที่คุณได้เห็นและปัญหายังคงไม่สามารถแก้ไขได้ด้วยตนเองลองข้างต้น จากนั้นกลับมาและโหวตสิ่งนี้ :)
tkjef

1
ในที่สุดคำตอบที่ไม่แฮ็คสำหรับปัญหานี้ควรเป็นที่ยอมรับอย่างแน่นอน!
php_nub_qq

17

นี่คือคำตอบด่วน เราจะตั้งค่าภาษาที่ไม่ได้ถูกรีเซ็ตหลังจากรีบูต ไฟล์ bash เปิดครั้งแรกและแก้ไข:

nano .bashrc

เพิ่มบรรทัดเหล่านี้ไปยังไฟล์:

export LC_ALL="en_US.UTF-8"
export LANG="en_US.UTF-8"
export LANGUAGE="en_US.UTF-8"

เปิดใช้งานการเปลี่ยนแปลงโดยการโหลด bash ใหม่:

source ~/.bashrc

ผลการทดสอบ :

locale

เซิร์ฟเวอร์เดียวที่ใช้งานได้สำหรับฉันเซิร์ฟเวอร์ Raspbian และ ubuntu 16.04 :)
Liso

13

สำหรับ 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

ทำงานให้ฉัน


นอกจากนี้ยังใช้งานได้สำหรับฉันด้วยการลบเนื้อหาทั้งหมดในไฟล์/etc/default/localeและวางเฉพาะคำจำกัดความของ vars (ลบคำที่ส่งออก) และรีสตาร์ทเซิร์ฟเวอร์
Edenshaw

12

หากคุณใช้Mac OS X v10.10 (Yosemite) ขึ้นไปเพื่อเชื่อมต่อในเซิร์ฟเวอร์ Linux คุณสามารถลองขั้นตอนเหล่านี้ได้

  1. เก็บไฟล์ / etc / ssh / sshd-config ของคุณเป็นต้นฉบับ

  2. ใส่ ~ / .bash_profile ของคุณ

    export LANG="en_US"
    export LC_ALL=$LANG.UTF-8
  3. วิ่ง

    dpkg-reconfigure locales

    และเลือก "en_US.UTF-8"


10
sudo nano /etc/locale.gen

ยกเลิกหมายเหตุสถานที่ที่คุณต้องการใช้ (เช่นen_US.UTF-8 UTF-8):

จากนั้นเรียกใช้:

sudo /usr/sbin/locale-gen

ที่มา: http://people.debian.org/~schultmc/locales.html


บริษัท ที่ฉันทำงานในสหรัฐอเมริกาโฮสต์เซิร์ฟเวอร์ git ที่มีลูกค้าต่างประเทศ ฝูงชน GB บ่นว่าโคลนคอมไพล์ของพวกเขามากกว่า ssh จะมีปัญหาเนื่องจากความแตกต่างของโลแคล สิ่งนี้นำไปใช้กับเซิร์ฟเวอร์แก้ไขปัญหานี้สำหรับพวกเขา
Therealstubot

10

คุณจำเป็นต้องกำหนดค่าสถานที่เหมาะสม/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

4
ขั้นตอนเหล่านี้ใช้งานได้สำหรับฉัน (เซิร์ฟเวอร์ Ubuntu 14.04) จุดหลักคือการออกจากระบบและเข้าสู่ระบบอีกครั้ง
อิสรภาพ

9
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

ขอบคุณนี้แก้ปัญหาของฉันหลังจากทำสิ่งนี้และติดตั้งใหม่
madprops

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

ขอแสดงความนับถือ


6

เพิ่มสถานที่ที่ถูกต้อง~/.bashrc, ~/.bash_profile, /etc/environmentและชอบจะแก้ปัญหา แต่ก็ไม่แนะนำให้เป็นมันจะแทนที่การตั้งค่าจาก/etc/default/localeซึ่งจะทำให้เกิดความสับสนที่ดีที่สุดและอาจนำไปสู่สถานที่ไม่ได้ถูกนำมาใช้อย่างต่อเนื่องที่เลวร้ายที่สุด

แต่ควรแก้ไข/etc/default/localeโดยตรงซึ่งอาจมีลักษณะเช่นนี้:

LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE=en_US

การเปลี่ยนแปลงจะมีผลในครั้งต่อไปที่คุณลงชื่อเข้าใช้คุณสามารถรับโลแคลใหม่ในเชลล์ที่มีอยู่โดยการจัดหา/etc/default/localeดังนี้:

$ . /etc/default/locale

1
ต้องเริ่มระบบใหม่หลังจากขั้นตอนนี้
Ghanshyam Bagul

คุณสามารถแสดงความคิดเห็นในสถานที่ที่ต้องการใน "/etc/locale.gen" จากนั้นเรียกใช้:locale-gen
Dave Everitt

5

สำหรับทุกคนที่เชื่อมต่อกับ 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").

การแก้ไขปัญหาสำหรับฉัน:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันรู้ว่าหัวข้อนี้เก่า แต่อาจมีบางคนอาจพบว่ามีประโยชน์ ฉันรู้ว่ามันน่ารำคาญขนาดไหน


ใช่การตั้งค่านี้ใน iterm2! ขอบคุณ!
Brian Olsen

4

ทำตามคำตอบที่ยอมรับ:

LANG = C ssh hunter2

LC_ALL = C ssh hunter2

ในฝั่งลูกค้าได้หลอกลวงฉัน


ทำงานกับฉันใน OSX 10.10.3 ในขณะที่ "LANG = C" เท่านั้นยังไม่พอ ขอบคุณอเล็กซ์!
คริสเตียน

4

ด้วย 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 อีกครั้งทำงานให้ฉัน :)



2

เช่นเคยปีศาจอยู่ในรายละเอียด ...

ใน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


2

คำตอบก่อนหน้านี้ทั้งหมดผิด ข้อความชัดเจน - ภาษาที่ขาดหายไป การแก้ปัญหาคือการเพิ่มสถานที่ที่เหมาะสม คุณทำได้โดยการแก้ไขไฟล์ /etc/locale.gen ให้ลบ # sign ด้านหน้าของ locale ที่รายงานว่าหายไปจากนั้นออกคำสั่ง:

$ sudo locale-gen

สิ่งนี้จะสร้างโลแคลที่ระบุใน /etc/locale.gen ดังนั้นข้อความจะไม่ถูกแสดง


นี้เป็นเพียงคำตอบและทำงานใน Debian โบราณ (6) สำหรับฉัน ส่วนที่เหลือทั้งหมดมีความซับซ้อนเกินกว่าจะออกนอกเส้นทางได้เล็กน้อย
Dave Everitt

2

ในกรณีของฉันด้วย debian8.6 ฉันต้องเปลี่ยนการตั้งค่าใน:

/etc/ssh/ssh_config สำหรับ #AcceptEnv LANG LC_*

และ sshd_configสำหรับ#SendEnv LANG LC_*

จากนั้นเริ่มบริการ ssh ใหม่

ในที่สุดก็ทำ

locale-gen en_US.UTF-8 และ dpkg-reconfigure locales


2

เพิ่มสถานที่ที่หายไปใน. 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

1

ในกรณีของฉันนี่คือผลลัพธ์:

LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = "ro_RO.UTF-8",
LC_ADDRESS = "ro_RO.UTF-8",
....

ทางออกคือ:

sudo locale-gen ro_RO.UTF-8

1

sshเขียนทับตัวแปรโลแคล LC ตามค่าเริ่มต้น ดู/etc/ssh/sshd_config:

AcceptEnv LANG LC_*

ดังนั้นคุณอาจต้องตั้งค่าตัวแปรเหล่านี้ในเชลล์ท้องถิ่นของคุณ


1

สำหรับฉันบน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

จากนั้นรีบูต ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.