Câu hỏi Làm cách nào để khắc phục sự cố ngôn ngữ của tôi?


Tôi nhận được thông báo này mỗi khi tôi làm điều gì đó như bắt đầu hoặc dừng dịch vụ.

perl: warning: Setting locale failed.   
perl: warning: Please check that your locale settings:   
        LANGUAGE = "en_US:en",   
        LC_ALL = (unset),   
        LC_MESSAGES = "en_US.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_CTYPE to default locale: No such file or directory   
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   
(Reading database ... 21173 files and directories currently installed.)  
Removing bind9 ...  
 * Stopping domain name service... bind9                                        [ OK ]
Processing triggers for man-db ...   
locale: Cannot set LC_CTYPE to default locale: No such file or directory   
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   

Làm thế nào để sửa lỗi này?


463
2017-07-11 14:08


gốc


Liên quan: Cách đặt ngôn ngữ? - Lucio
có thể trùng lặp Biến miền địa phương không có hiệu lực trong trình bao từ xa (perl: warning: Đặt miền địa phương không thành công.) - Denilson Sá Maia
Sửa lỗi dễ dàng và vĩnh viễn cho tất cả người dùng: askubuntu.com/questions/881742/… - Galvani


Các câu trả lời:


Lần chạy đầu tiên locale để liệt kê những miền địa phương hiện được xác định cho tài khoản người dùng hiện tại:

$ locale
LANG=C
LANGUAGE=
LC_CTYPE=fi_FI.UTF-8
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE=fi_FI.UTF-8
LC_MONETARY="C"
LC_MESSAGES=fi_FI.UTF-8
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=

Sau đó, tạo miền địa phương bị thiếu và định cấu hình lại miền địa phương để lưu ý:

$ sudo locale-gen "en_US.UTF-8"
Generating locales...
  en_US.UTF-8... done
Generation complete.

$ sudo dpkg-reconfigure locales
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.

Bây giờ bạn sẽ không thấy bất kỳ lỗi nào nữa!


471
2017-12-10 12:45



không làm việc cho tôi - Umair
Điều này đã làm việc cho tôi trên một số hệ thống. Có cách nào để tránh vấn đề này trên các hệ thống mới được cài đặt không? - Brylie Christopher Oxley
@UmairAyub có thể là bạn có nhiều ngôn ngữ không xác định, hãy thử cách này: cho y bằng $ (ngôn ngữ | cut -d '=' -f 2 | sort | uniq); làm locale-gen $ y; làm xong Nó sẽ tạo ra một miền địa phương cho mỗi định nghĩa mà bạn có - Ivan Buttinoni
Miền địa phương trong locale-gen lệnh phải nằm trong dấu ngoặc kép để điều này hoạt động đúng: $ sudo locale-gen "en_US.UTF-8" - Sheharyar
@ Umair Có nguy cơ cao về lỗi của con người trong vấn đề này. Hệ thống của bạn được định cấu hình thành en_GB theo mặc định, nhưng bạn thiết lập en_US. Bạn phải tự nhận xét en_GB và bỏ ghi chú en_US trong /etc/locale.gen. Xem câu trả lời của tôi askubuntu.com/a/790373/25388 trong phần cứng Raspberry Pi 3b và hệ thống Raspbian Jessie. - Léo Léopold Hertz 준영


Không có đề xuất nào ở trên hoạt động trong trường hợp của tôi (Ubuntu Server 12.04LTS). Điều cuối cùng đã giúp đã được đưa vào tập tin /etc/environment:

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

Vì một lý do nào đó nó bị thiếu. Các kết quả đầu ra cho ngôn ngữ và các lệnh khác xuất hiện giống như các biến được xác định đúng. Nói cách khác, không cho phép tất cả các công cụ cơ bản được khai báo nơi nó phải được khai báo.


340
2017-12-16 04:11



Có, không ai khác làm việc ngoại trừ cái này, có lẽ do phiên bản cập nhật. Nhưng tôi thích đặt nó vào /etc/default/locale. - Naveed
Đã cập nhật /etc/default/locale và không còn cảnh báo nữa. Cảm ơn - ohho
Đúng, những người khác không làm việc cho tôi. Điều này đã làm. Đây là một lớp lót mà tôi sử dụng để cập nhật không cần giám sát. sudo sh -c "echo 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment" - dman
@ user163207 giải pháp của bạn không chính xác bởi vì nó gắn thêm (thay vì ghi đè), nó không phải là tệp được đề xuất và echo cần phải được chạy với việc giải thích các dấu gạch chéo ngược được kích hoạt. Điều này giống với của bạn nhưng với sự cố định đã nói ở trên: sh -c "echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale" - glarrain
KHÔNG QUÊN ĐĂNG NHẬP VÀ ĐĂNG NHẬP! - S.M.Mousavi


Chúng sẽ biến mất sau khi phát hành:

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

dpkg-reconfigure cấu hình lại các gói sau khi chúng đã được        Cài đặt. Chuyển nó tên của một gói hoặc gói để cấu hình lại.        Nó sẽ hỏi các câu hỏi về cấu hình, giống như khi gói        đầu tiên được cài đặt.


140
2017-07-11 14:19



Tôi vui vì những rắc rối của tôi một năm trước đã giúp bạn khắc phục sự cố này;) - Rinzwind
Miền địa phương này có nên được tạo theo mặc định không? Ý tôi là en, en_AU, en_CA, en_GB có mặt theo mặc định nhưng không en_US? - Daniel Serodio
@Rinzwind Cảm ơn rất nhiều vì nỗ lực của bạn! Tôi xin lỗi; Tôi nên nói tốt hơn câu hỏi của mình. Điều tôi muốn hỏi là: Tại sao cần phải định cấu hình lại gói ngôn ngữ sau khi tạo miền địa phương mới? Dường như với tôi như miền địa phương làm việc ngay cả khi không có dpkg-reconfigure. - Victor
Sử dụng Ubuntu 14.04, trong vùng chứa Docker, vì vậy không có gì được thiết lập. Django's makemessage cần điều này. Điều này làm việc hoàn hảo! cảm ơn. - Justin
Tôi tin rằng sudo bị thiếu. Có lẽ nó nên là: sudo dpkg-reconfigure locales. Điều này làm việc cho tôi sau khi cài đặt mới Ubunty 14.10 Desktop 64-bit. - bgoodr


Chỉ cần thêm thông tin sau vào .bashrc tệp (giả sử bạn đang sử dụng bash)

export LC_ALL="en_US.UTF-8"

108
2017-11-08 09:42



Bản sửa lỗi ngọt ngào này làm việc cho tôi trên hình ảnh Amazon-EC2 của tôi (Đã chạy mặc định RHEL AMI) Cảm ơn bạn rất nhiều! :) - gideon
Điều này làm việc cho tôi với hình ảnh Ubuntu 12.04 của digitalocean của tôi. - Inan Berbatov
điều này đã khắc phục được sự cố của tôi. Tôi phải đặt một câu hỏi: làm thế nào đến LC_ALL đã không được thiết lập bởi các lệnh locale-gen như câu trả lời khác đã nói ở trên này? - alexserver
Lạ lùng, mọi giải pháp trên đều không có tác dụng với tôi nhưng điều này đã làm được! Sau khi xuất LC_ALL Tôi cuối cùng có thể sử dụng sudo dpkg-reconfigure locales. - sobi3ch
cuối cùng sau khi cố gắng rất nhiều thủ thuật, đây là một trong những làm việc cho tôi trên kubuntu 14.04.3 lts. cảm ơn! - Jonas


Đây là một vấn đề phổ biến nếu bạn đang kết nối từ xa, vì vậy giải pháp là không chuyển tiếp miền địa phương của bạn. Chỉnh sửa /etc/ssh/ssh_config và nhận xét SendEnv LANG LC_* hàng.


88
2017-10-01 00:45



Tôi đã thử các câu trả lời khác, nhưng quên tôi đã kết nối từ xa cho đến khi tôi nhìn thấy câu trả lời của bạn. Các miền địa phương khác nhau trên máy chủ và máy khách ssh đã gây ra sự cố. - Hieu
Trên OSX (kết nối với ubuntu) nó ở /etc/ssh_config - Michiel de Mare
Một lớp lót để thực hiện việc này: sed -e '/SendEnv/ s/^#*/#/' -i /etc/ssh/ssh_config (hữu ích cho việc cung cấp máy chủ) - Albin
Tôi không thể đặt LC_ALL trên máy địa phương nhưng nó đã khắc phục sự cố của tôi với máy chủ từ xa, cảm ơn. - Alexander Shlenchack
Có thể đáng chú ý là bạn phải chỉnh sửa tệp trên máy cục bộ chứ không phải từ xa. - Clashsoft


Có một lệnh cho rằng:

sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

Nó cập nhật /etc/default/locale với các giá trị được cung cấp.


63
2017-08-01 11:51



Điều này hợp pháp! Đừng quên đăng xuất / tải lại vỏ của bạn, nếu không bạn sẽ không thấy các thay đổi. Đừng quên kiểm tra câu trả lời đã được phê duyệt để tạo và định cấu hình lại ngôn ngữ. - Erik Zivkovic
Đang chạy locale vẫn không hiển thị bất kỳ giá trị utf nào. - Cerin
@Cerin: Myybe, một cuộc gọi đến locale-gen bị thiếu. Trước đây, người ta phải làm apt-get install locales. - koppor
Điều này sẽ không thay đổi LANG cho vỏ gốc trên Ubuntu 16.04, vì nó bị overruled trong /root/.profile. - Willem


Những gì làm việc cho tôi vào ngày 12.10 là:

apt-get install language-pack-en-base  

Đây là sau dpkg-reconfigure locales không tạo ra kết quả nào.


30
2018-04-28 02:01



Đây là câu trả lời hay nhất. Nó không phải là địa điểm của tôi đã được thiết lập không chính xác, nhưng họ đã không thực sự tồn tại. Tôi nghĩ rằng điều này cũng tương tự như vấn đề của OP ("Không có tập tin hoặc thư mục như vậy" là khá rõ ràng nếu miền địa phương của bạn Là đặt đúng!). - Breakthrough
Tôi đã nhận được các vấn đề OPs bao giờ tôi đã sử dụng apt-get trên Ubuntu 12.04 Điều này giải quyết nó hoàn hảo mà không cần phải chỉnh sửa bất kỳ tập tin. - Deepend
"language-pack-en-base đã là phiên bản mới nhất." - karlingen
Đăng xuất và Đăng nhập có thể giúp - S.M.Mousavi
Làm việc cho tôi trong một ubuntu chroot dưới debian. Cảm ơn :) - Wyatt8740