CentOS 6 และโลแคลผิดพลาด


16

ฉันเพิ่งติดตั้ง CentOS 6 และเมื่อใดก็ตามที่ฉันเข้าสู่ระบบผ่านทาง SSH จากระยะไกลฉันได้รับข้อผิดพลาดต่อไปนี้:

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)

เมื่อฉันพิมพ์ "locale" บนบรรทัดคำสั่งฉันจะได้ผลลัพธ์ต่อไปนี้:

locale: Cannot set LC_CTYPE 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
LC_CTYPE=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=

มีปัญหาอะไรบ้าง? ฉันจะแก้ปัญหานี้ได้อย่างไร


วิธีแก้ปัญหาของคุณในการคอมเม้นต์ SendEnv LANG LC_ * หาได้กับฉันบน Mac OS X 10.7.5

คำตอบ:


10

บนเซิร์ฟเวอร์ที่คุณทำคุณมีชุดภาษาผ่านตัวแปรสภาพแวดล้อมหรือไม่? ในการดู CentOS ของฉันติดตั้ง 6 สถานที่เดียวที่ฉันสามารถหาการสนับสนุนถูกระบุว่าเป็นen_US.utf8(ค้นพบโดยใช้locale -aคำสั่ง) นี่อาจเป็นปัญหาหรือไม่

ในการทดสอบของฉันเมื่อฉันตั้งค่าLC_ALLตัวแปรสภาพแวดล้อมเป็นen_US.UTF-8ssh'd กับเซิร์ฟเวอร์เอาต์พุตของคำสั่ง locale ของฉันถูกตั้งค่าเป็นPOSIXในกรณีของฉัน สิ่งนี้เหมือนกับเมื่อฉันไม่ได้ตั้งค่า (เช่นไม่ได้ตั้งค่า) LC_ALLตัวแปรก่อน ssh'ing

เมื่อฉันตั้งค่าLC_ALLตัวแปรของฉันเป็นen_US.utf8หรือen_US.utf-8ssh จะไปที่กล่อง CentOS 6 ของฉันผลลัพธ์ของโลแคลนั้นเหมือนกับสิ่งที่ตั้งไว้ในกล่องซอร์ส

แจ้งให้ทราบล่วงหน้าฉันไม่ใช้ตัวพิมพ์ใหญ่สำหรับ UTF ด้วย


11
โดยวิธีการที่ฉันสังเกตเห็นว่าสิ่งนี้เกิดขึ้นจากการตั้งค่า ssh Mac OS X Lion ของฉัน ฉันแก้ไขไฟล์ / etc / ssh_config และคอมเม้นท์ SendEnv LANG LC_ * มันแก้ไขปัญหาของฉัน
Cem

@Cem ขอบคุณสำหรับเคล็ดลับนี้แน่นอนแก้ไขบน Mac OS X Lion
Zsolt Török

17

แก้ไขสิ่งนี้โดยการปิดการใช้งาน "ตั้งค่าตัวแปรสภาพแวดล้อมของโลแคลเมื่อเริ่มต้น" ในการตั้งค่าเทอร์มินัล> ขั้นสูงตามภาพหน้าจอนี้

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

หมายเหตุ: หากคุณใช้ iTerm2 คุณสามารถปิดการใช้งานตัวเลือก "ตั้งค่าตัวแปรภาษาอัตโนมัติ" ในการตั้งค่า> โปรไฟล์> เทอร์มินัล


1
สิ่งนี้ใช้ได้สำหรับฉัน โดยเฉพาะ Terminal.app กำลังตั้งค่า "LC_CTYPE = UTF-8" ซึ่งทำให้เกิดข้อผิดพลาดที่รายงานโดย OP หรืออีกวิธีหนึ่งunset LC_CTYPEหรือexport LC_CTYPE=en_US.UTF-8fixup ปัญหาหลังจากการเข้าสู่ระบบ
ทำให้ช้าลง

วิธีนี้แก้ไขได้สำหรับฉันขอบคุณ
pjvds

11

วิธีง่าย ๆ :

เพิ่ม

 LC_CTYPE="en_US.UTF-8"

/etc/sysconfig/i18nไปยัง


มันใช้งานได้สำหรับฉันหลังจากพยายามมาหลายครั้ง
Tommy

2

สิ่งที่ใช้ได้ผลสำหรับฉันคือการเพิ่ม symlink ในเซิร์ฟเวอร์ CentOS เช่นนี้:

ln -s /usr/lib/locale/en_US.utf8 /usr/lib/locale/UTF-8

เมื่อคุณทำคำสั่งเช่นนี้:

export LC_CTYPE=UTF-8

ถ้าคุณทำไม่ได้คำสั่งสุดท้ายนี้ล้มเหลวพร้อมกับข้อผิดพลาดนี้:

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

ตอนนี้ทางออกที่ง่ายยิ่งขึ้นเพียงเพิ่มบรรทัดนี้ใน / etc / bashrc ในเซิร์ฟเวอร์:

export LC_CTYPE="en_US.utf8"

ขอบคุณสำหรับการเข้า! มันใช้งานได้ดีจริงๆ ในที่สุดก็สามารถที่จะลบความคิดเห็นที่น่ารำคาญ ...
Cristobal

2

ฉันได้รับข้อความนี้เฉพาะเมื่อเข้าสู่ระบบจาก Solaris X ไปยังโฮสต์ Centos

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

ปัญหามาจากการตั้งค่า 2 รายการ:

  1. ในระบบเริ่มต้นของฉัน ssh_config ฉันขอให้ระบบผ่านตัวแปรเหล่านั้น

ส่งตัวแปรสภาวะแวดล้อมที่เกี่ยวข้องกับโลแคล SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES

  1. ในโฮสต์ต้นทางของฉันการตั้งค่าเหล่านี้ถูกตั้งค่าด้วยวิธีนี้:

    แหล่งที่มา # LANG = LC_CTYPE = fr_FR.UTF-8 LC_NUMERIC = fr_FR.UTF-8 LC_TIME = fr_FR.UTF-8 LC_CONLATE = fr_FR.UTF-8 LC_MONETARY = fr_FR.UTF-8 LC_MESSAGES

แต่อย่างที่คุณเห็น LC_MESSAGES ถูกตั้งค่าเป็น fr.UTF-8 ซึ่งไม่ใช่ตัวเลือกในโฮสต์ปลายทางของฉัน

 DEST#locale -a | grep fr_FR
 fr_FR
 fr_FR@euro
 fr_FR.iso88591
 fr_FR.iso885915@euro
 fr_FR.utf8

ปัญหาได้รับการแก้ไขบังคับให้โฮสต์ต้นทางของฉันเปิดใช้งาน. bash_profile: # export LC_ALL = fr_FR.UTF-8 export LANG = fr_FR.UTF-8

ฉันสามารถแก้ไขได้โดยขอให้โฮสต์ปลายทางของฉันไม่ใช้ตัวแปรนี้จากการเชื่อมต่อ ssh ใด ๆ (โดยทั่วไปหรือโดยการสร้างไฟล์ ssh_config สำหรับผู้ใช้ของฉัน)


1

ในระบบ Centos 6.2 ในระบบ: สิ่งนี้ไม่ได้ช่วย:

localedef -i en_US -f UTF-8 en_US.UTF-8

สิ่งนี้ได้ผล:

localedef --no-archive -i en_US -f UTF-8 en_US.UTF-8

ฉันยังลบในlocale-archive /usr/lib/localeฉันไม่ทราบว่าจำเป็นหรือไม่


1

นี่คือการแก้ไขของฉันในอดีตสำหรับข้อผิดพลาดของสถานที่

รันสิ่งต่อไปนี้: locale-gen

จากนั้นแก้ไข /etc/locale.gen ตรวจสอบให้แน่ใจว่าไม่มีการใส่เครื่องหมายคอมเมนต์ต่อไปนี้:

en_US.UTF-8 UTF-8  
en_US ISO-8859-1  

generate locale

locale-gen

1

ด้วยIterm2จะแตกต่างกัน
ไปที่Iterm2 -> Preferencesแล้วไปที่Profilesแท็บและเลือกTerminalแท็บจากด้านล่าง
ไปที่Environmentหมวดหมู่และยกเลิกการทำเครื่องหมาย;

ตั้งค่าตัวแปรโลแคลโดยอัตโนมัติ

สุดท้ายปิดและเริ่มเซสชันใหม่

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


0

และตรวจสอบให้แน่ใจว่า LC_ALL="en_US.UTF-8"อยู่ในหรือเพิ่มลงใน / etc / sysconifg / i18n

เนื้อหาตัวอย่าง

LANG="en_GB.UTF-8"
SYSFONT="latarcyrheb-sun16"
LC_ALL="en_US.UTF-8" 

-3

แก้ไข /etc/sysconfig/i18n

เปลี่ยนLANG="us"เป็นLANG="en_US"

บันทึกและออกจากระบบออกจากระบบและกลับเข้ามาใหม่

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