CentOS 6 và lỗi miền địa phương


16

Tôi vừa cài đặt CentOS 6 và bất cứ khi nào tôi đăng nhập vào hệ thống qua SSH từ xa, tôi gặp lỗi sau:

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

Khi tôi gõ "ngôn ngữ" trên dòng lệnh, tôi nhận được đầu ra sau:

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=

Những gì có thể là vấn đề? Làm thế nào tôi có thể giải quyết vấn đề này?


giải pháp bình luận của bạn về SendEnv LANG LC_ * arg đã làm việc cho tôi trên Mac OS X 10.7.5

Câu trả lời:


10

Trên máy chủ bạn ssh từ đó bạn có cài đặt ngôn ngữ thông qua biến môi trường không? Khi xem bản cài đặt CentOS 6 của tôi, ngôn ngữ duy nhất mà tôi có thể tìm thấy được hỗ trợ được xác định là en_US.utf8(được phát hiện bằng locale -alệnh). Đây có phải là vấn đề không?

Trong thử nghiệm của tôi, khi tôi đặt LC_ALLbiến môi trường thành en_US.UTF-8, ssh'd cho máy chủ, đầu ra của lệnh miền địa phương của tôi được đặt thành POSIXtrong trường hợp của tôi. Điều này giống như khi tôi KHÔNG đặt (tức là bỏ đặt) LC_ALLbiến trước khi ssh'ing.

Khi tôi đặt LC_ALLbiến của mình thành en_US.utf8hoặc en_US.utf-8, ssh'd vào hộp CentOS 6 của tôi, đầu ra của miền địa phương giống như những gì được đặt trên hộp nguồn.

Lưu ý tôi cũng không sử dụng mũ cho UTF.


11
Nhân tiện, tôi nhận thấy rằng điều này đã xảy ra từ cài đặt ssh Mac OS X Lion của tôi. Tôi đã chỉnh sửa tệp / etc / ssh_config và nhận xét SendEnv LANG LC_ *. Nó giải quyết vấn đề của tôi.
Cem

@Cem Cảm ơn vì tiền boa, điều này thực sự đã sửa nó trên Mac OS X Lion.
Zsolt Török

17

Đã giải quyết vấn đề này bằng cách vô hiệu hóa "Đặt biến môi trường miền địa phương khi khởi động" trong Cài đặt đầu cuối> Nâng cao theo ảnh chụp màn hình này.

nhập mô tả hình ảnh ở đây

LƯU Ý: Nếu bạn sử dụng iTerm2, bạn có thể tắt tùy chọn "Đặt biến cục bộ tự động" trong Tùy chọn> Cấu hình> Đầu cuối


1
Điều này làm việc cho tôi. Cụ thể, Terminal.app đã thiết lập "LC_CTYPE = UTF-8", sau đó gây ra các lỗi được báo cáo bởi OP. Ngoài ra, unset LC_CTYPEhoặc khắc phục export LC_CTYPE=en_US.UTF-8sự cố sau khi đăng nhập.
Tardate

Điều này đã giải quyết nó cho tôi, thx
pjvds 6/03/2015

11

Cách đơn giản:

Thêm vào

 LC_CTYPE="en_US.UTF-8"

để /etc/sysconfig/i18n.


Nó làm việc cho tôi, sau rất nhiều lần thử.
Tommy

2

Điều làm việc cho tôi là thêm một liên kết tượng trưng trong máy chủ CentOS như thế này:

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

Khi bạn thực hiện các lệnh như thế này sẽ hoạt động:

export LC_CTYPE=UTF-8

Nếu bạn không, lệnh cuối cùng này không thành công với lỗi này:

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

Bây giờ, một giải pháp thậm chí đơn giản hơn là chỉ cần thêm dòng này vào / etc / bashrc trong máy chủ:

export LC_CTYPE="en_US.utf8"

Cảm ơn các đầu vào! điều này làm việc thực sự tuyệt vời. Cuối cùng cũng có thể xóa bình luận phiền phức đó ...
cristobal

2

Tôi đã nhận được thông báo cụ thể này, khi đăng nhập từ Solaris X đến máy chủ 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

Vấn đề đến từ 2 cài đặt:

  1. Trong hệ thống mặc định của tôi ssh_config, tôi yêu cầu hệ thống chuyển các biến đó.

Gửi các biến môi trường liên quan đến miền địa phương SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES

  1. Trên máy chủ nguồn của tôi, cài đặt thoses được đặt theo cách này:

    SOURCE # LANG = LC_CTYPE = fr_FR.UTF-8 LC_NUMERIC = fr_FR.UTF-8 LC_TIME = fr_FR.UTF-8 LC_COLLATE = fr_FR.UTF-8 LC_MONETARY = fr_

Nhưng, như bạn có thể thấy, LC_MESSAGES, được đặt thành fr.UTF-8, đây không phải là một tùy chọn trên máy chủ đích của tôi.

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

Vấn đề đã được giải quyết buộc trên máy chủ nguồn của tôi, trên .bash_profile: # export LC_ALL = fr_FR.UTF-8 export LANG = fr_FR.UTF-8

Tôi có thể giải quyết nó bằng cách yêu cầu máy chủ định mệnh của tôi không lấy biến này từ bất kỳ kết nối ssh nào (nói chung hoặc bằng cách tạo tệp ssh_config bản địa cho người dùng của tôi)


1

Trên hệ thống Centos 6.2 cục bộ: Điều này không giúp ích gì:

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

Điều này đã làm việc:

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

Tôi cũng đã xóa locale-archivetrong /usr/lib/locale. Tôi không biết nếu điều này là cần thiết.


1

Đây là sửa chữa của tôi trong quá khứ cho lỗi địa phương.

Chạy như sau: locale-gen

Sau đó chỉnh sửa /etc/locale.gen. Hãy chắc chắn rằng những điều sau đây không bị thiếu:

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

generate locale

locale-gen

1

Với Iterm2 thì khác.
Chuyển đến Iterm2 -> Preferences, sau đó chuyển đến Profilestab và chọn Terminaltab từ dưới cùng.
Đi đến Environmentdanh mục và bỏ đánh dấu;

Đặt biến cục bộ tự động

Cuối cùng, đóng và bắt đầu một phiên mới.

nhập mô tả hình ảnh ở đây


0

và đảm bảo LC_ALL="en_US.UTF-8"có trong hoặc thêm vào / etc / sysconifg / i18n

nội dung ví dụ

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

-3

biên tập /etc/sysconfig/i18n

Thay đổi LANG="us"thànhLANG="en_US"

Lưu và thoát, đăng xuất và đăng nhập lại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.