ปัญหาของไม่สามารถตั้งค่าภาษา ตรวจสอบให้แน่ใจว่า $ LC_ * และ $ LANG ถูกต้อง!


49

เมื่อฉันพยายามติดตั้งแพ็คเกจใหม่ฉันจะได้รับข้อความนี้:

Can't set locale; make sure $LC_* and $LANG are correct!
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = "en_GB:en",
    LC_ALL = (unset),
    LC_CTYPE = "en_GB.UTF-8",
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

ระบบปฏิบัติการของฉันคือ Debian Jessie 8.3 (Mate) โดยใช้ภาษาอังกฤษกับแป้นพิมพ์ภาษาฝรั่งเศส เมื่อฉันพิมพ์สถานที่ฉันได้รับสิ่งนี้:

locale: Cannot set LC_MESSAGES 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_GB:en
LC_CTYPE=en_GB.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=

คำตอบ:


62

Debian จัดส่งโลแคลในรูปแบบของแหล่งที่มา พวกเขาจะต้องรวบรวมอย่างชัดเจน เหตุผลในการนี้คือสถานที่ที่รวบรวมใช้พื้นที่ดิสก์มากขึ้น แต่คนส่วนใหญ่ใช้เพียงไม่กี่แห่ง

เรียกใช้dpkg-reconfigure localesเป็นรากเลือกสถานที่ที่คุณต้องการในรายการ (ด้วยการตั้งค่าของคุณคุณต้องen_GBและen_US.UTF-8- ผมขอแนะนำให้เลือกen_USและen_GB.UTF-8เช่นกัน) <OK>จากนั้นกดปุ่ม

อีกทางหนึ่งคือแก้ไข/etc/locale.genยกเลิกการใส่เครื่องหมายในบรรทัดสำหรับสถานที่ที่คุณต้องการและเรียกใช้locale-genเป็นรูท

(หมายเหตุ: บน Ubuntu สิ่งนี้ใช้งานได้แตกต่างกัน: รันlocale-genกับโลแคลที่คุณต้องการสร้างเป็นอาร์กิวเมนต์เช่นsudo locale-gen en_GB en_US en_GB.UTF-8 en_US.UTF-8)

อีกทางหนึ่งตอนนี้ Debian มีแพ็คเกจlocales-allที่คุณสามารถติดตั้งแทนlocalesได้ มันมีตำแหน่งที่ตั้งทั้งหมดที่สร้างไว้ล่วงหน้า ข้อเสียคือพวกเขาใช้พื้นที่ดิสก์มากขึ้น (112MB เทียบกับ 16MB)


1
มันทำงานได้ แต่หลังจากที่ฉันออกจากระบบแล้วเข้าสู่ระบบอีกครั้ง
Forivin

ทำงานให้ฉันด้วย!
Jamie Ivanov

แก้ไข/etc/locale.genกวนได้งานสำหรับฉัน (ไม่ได้ออกจากระบบ / เข้าสู่ระบบ) แต่locale-genการแก้ไขของฉันtmux: need UTF-8 locale (LC_CTYPE)ปัญหาบนDebian 4.9.82
eapo

2
@eapo ขณะที่ผมระบุในคำตอบของฉันคุณต้องแก้ไข/etc/locale.gen และlocale-genจากนั้นเรียกใช้
Gilles 'หยุดความชั่วร้าย' ใน

ฉันพลาดเล็กน้อยเกี่ยวกับการเปิดใช้งานen_US.UTF-8เช่นกันและสถานที่ของคุณเอง ฉันพบวิธีที่ยากลำบากแล้ววนกลับมาที่นี่เพื่อให้คำตอบของฉันเองก่อนที่จะรู้ตัวว่ามันอยู่ที่นี่มาตลอด
Alastair McCormack

19

โซลูชันอันดับสูงสุดไม่ได้ช่วยในกรณีของฉันดังนั้นฉันจึงใช้สิ่งนี้:

export LC_ALL="en_US.UTF-8"
sudo dpkg-reconfigure locales

หลังจากนั้นฉันออกจากระบบและเข้าสู่ระบบและข้อผิดพลาดหายไป


2
การใช้ LC_ALL นั้นไม่ควรทำอย่างยิ่งเนื่องจากมันจะแทนที่ทุกอย่าง กรุณาใช้มันเฉพาะเมื่อการทดสอบและไม่เคยตั้งไว้ในไฟล์เริ่มต้น ตาม: wiki.debian.org/Locale
Pitone Maledetto

6

คำสั่งเหล่านี้ช่วยชีวิตฉันไว้

# echo "LC_ALL=en_US.UTF-8" >> /etc/environment
# echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
# echo "LANG=en_US.UTF-8" > /etc/locale.conf
# locale-gen en_US.UTF-8

5

หากคุณกำลังประสบปัญหานี้กับราสเบอร์รี่ pi (หรืออื่น ๆ ) และคุณได้รับข้อผิดพลาดเมื่อคุณไปที่ pi มีวิธีแก้ไขปัญหาอื่นอีก 2 วิธี

หนึ่งคือการแก้ไข/etc/ssh/sshd_configใน pi และแสดงความคิดเห็นออกมาจากสาย

AcceptEnv LANG LC_*

ตัวอย่างเช่น sudo nano /etc/ssh/sshd_config

หลังจากนั้นคุณควรรีสตาร์ทเซิร์ฟเวอร์ ssh

sudo systemctl restart ssh

อีกอันอยู่บนเครื่องไคลเอนต์ของคุณ ( ไม่ใช่ pi ) แก้ไข/etc/ssh/ssh_config(เส้นทางที่แตกต่างจากด้านบน) และคอมเม้นท์ในบรรทัด

SendEnv LANG LC_*

ทั้งสองอย่างนี้เป็นสิ่งที่ไม่ใส่ร้ายสำหรับฉัน แต่ยังมีปัญหาเกิดขึ้น (RPi3, macOS10.14)
jorijnsmit

แสดงความคิดเห็นออกมาในขณะนี้ ไม่ได้มีโอกาสทดสอบ แต่ฟังดูมีเหตุผลมากกว่านี้ ... ขอบคุณ
jorijnsmit

2

คุณต้องติดตั้งแพคเกจlocales(หรือlocales-allสถานที่ en_GB ขึ้นอยู่กับรุ่น Debian ที่คุณมี)

วิธีแก้ไขปัญหาที่ไม่มีข้อผิดพลาดเช่น: ตั้งค่าLANG=Cเป็นรูทเพื่อที่จะไม่ใช้ภาษา

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