Vấn đề không thể đặt ngôn ngữ; đảm bảo $ LC_ * và $ LANG là chính xác!


49

Khi tôi luôn cố gắng cài đặt gói mới, tôi nhận được thông báo này:

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

Hệ điều hành của tôi là Debian Jessie 8.3 (Mate) sử dụng tiếng Anh với bàn phím tiếng Pháp. Khi tôi gõ miền địa phương, tôi nhận được điều này:

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=

Câu trả lời:


62

Debian gửi các địa phương ở dạng nguồn. Chúng cần được biên dịch rõ ràng. Lý do cho điều này là các địa phương được biên dịch sử dụng nhiều dung lượng đĩa hơn, nhưng hầu hết mọi người chỉ sử dụng một vài trong số họ.

Chạy dpkg-reconfigure localesvới quyền root, chọn các địa điểm bạn muốn trong danh sách (với cài đặt của bạn, bạn cần en_GBen_US.UTF-8- Tôi khuyên bạn cũng nên chọn en_USen_GB.UTF-8sau đó nhấn) <OK>.

Ngoài ra, chỉnh sửa /etc/locale.gen, bỏ ghi chú các dòng cho các địa điểm bạn muốn và chạy locale-gennhư root.

(Lưu ý: trên Ubuntu, cách này hoạt động khác: chạy locale-genvới các địa điểm bạn muốn tạo làm đối số, vd sudo locale-gen en_GB en_US en_GB.UTF-8 en_US.UTF-8.)

Ngoài ra, Debian hiện có một gói locales-allmà bạn có thể cài đặt thay vì locales. Nó có tất cả các địa phương được tạo trước. Nhược điểm là chúng sử dụng nhiều dung lượng đĩa hơn (112MB so với 16MB).


1
Nó hoạt động, nhưng chỉ sau khi tôi đăng xuất và sau đó đăng nhập lại.
Forivin

Làm việc cho tôi quá!
Jamie Ivanov

chỉnh sửa /etc/locale.gendoes't đã làm công việc cho tôi (đã logout / login), nhưng locale-gengiải quyết của tôi tmux: need UTF-8 locale (LC_CTYPE)vấn đề trênDebian 4.9.82
eapo

2
@eapo Khi tôi nêu câu trả lời của mình, bạn cần chỉnh sửa /etc/locale.gen sau đó chạy locale-gen.
Gilles 'SO- ngừng trở nên xấu xa'

Tôi đã bỏ lỡ một chút về việc kích hoạt en_US.UTF-8là tốt và địa phương của riêng bạn. Tôi phát hiện ra một cách khó khăn sau đó quay lại đây để đưa ra câu trả lời của riêng mình trước khi nhận ra nó ở đây suốt.
Alastair McCormack

19

Giải pháp được xếp hạng hàng đầu không giúp ích gì trong trường hợp của tôi, vì vậy tôi đã sử dụng giải pháp này:

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

Sau đó, tôi đăng xuất và đăng nhập và lỗi bị thiếu.


2
Sử dụng LC_ALL được khuyến khích mạnh mẽ vì nó ghi đè lên mọi thứ. Vui lòng chỉ sử dụng khi kiểm tra và không bao giờ đặt nó trong tệp khởi động. theo: wiki.debian.org/Locale
Pitone Maledetto

6

Những lệnh này đã cứu mạng tôi

# 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

6

Nếu bạn gặp sự cố này trên pi mâm xôi (hoặc khác?) Và bạn đang gặp lỗi khi bạn ssh đến pi, có 2 giải pháp khác

Một là chỉnh sửa /etc/ssh/sshd_configtrên pi và bình luận ra dòng

AcceptEnv LANG LC_*

ví dụ sudo nano /etc/ssh/sshd_config

Sau đó, bạn nên khởi động lại máy chủ ssh

sudo systemctl restart ssh

Cái khác là trên máy khách của bạn ( không phải pi ) chỉnh sửa /etc/ssh/ssh_config(đường dẫn khác từ phía trên) và nhận xét dòng

SendEnv LANG LC_*

Cả hai điều này đều không phù hợp với tôi nhưng vấn đề vẫn phát sinh. (RPi3, macOS10,14)
jorijnsmit

Bình luận ra dòng bây giờ. Không thực sự có cơ hội để kiểm tra nhưng nghe có vẻ hợp lý hơn theo cách này ... Cảm ơn.
jorijnsmit

2

Bạn cần cài đặt gói locales(hoặc locales-allngôn ngữ en_GB, tùy thuộc vào phiên bản Debian bạn có).

Một cách giải quyết không có lỗi như vậy: được đặt LANG=Cthành root, do đó nó sẽ không sử dụng ngôn ngữ.

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.