Pertanyaan Bagaimana cara memperbaiki masalah lokal saya?


Saya menerima pesan ini setiap kali saya melakukan sesuatu seperti memulai atau menghentikan layanan.

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   

Bagaimana cara memperbaiki kesalahan ini?


462
2017-07-11 14:08


asal


Terkait: Bagaimana cara mengatur lokal? - Lucio
kemungkinan duplikat dari Variabel lokal tidak memiliki efek pada shell jarak jauh (perl: warning: Setting locale failed.) - Denilson Sá Maia
Perbaikan mudah dan permanen untuk semua pengguna: askubuntu.com/questions/881742/… - Galvani


Jawaban:


Lari pertama locale untuk mencantumkan apa yang saat ini ditentukan oleh lokal untuk akun pengguna saat ini:

$ 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=

Kemudian hasilkan lokal yang hilang dan konfigurasikan kembali lokal untuk memperhatikan:

$ 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.

Sekarang Anda tidak akan melihat kesalahan lagi!


471
2017-12-10 12:45



tidak bekerja untukku - Umair
Ini berhasil bagi saya di sejumlah sistem. Apakah ada cara untuk menghindari masalah ini pada sistem yang baru dipasang? - Brylie Christopher Oxley
@UmairAyub mungkin Anda memiliki lebih dari satu lokasi tidak dikenal, coba ini: untuk y dalam $ (lokal | cut -d '=' -f 2 | sort | uniq); lakukan locale-gen $ y; selesaiIni akan menghasilkan lokal untuk setiap definisi yang Anda miliki - Ivan Buttinoni
Lokal dalam locale-gen perintah harus dalam tanda kutip ganda agar ini berfungsi dengan benar: $ sudo locale-gen "en_US.UTF-8" - Sheharyar
@Umair Ada risiko tinggi kesalahan manusia dalam masalah ini. Sistem Anda dikonfigurasi untuk en_GB secara default, tetapi Anda mengaturnya en_US. Anda harus berkomentar secara manual en_GB dan tanda komentar en_US di /etc/locale.gen. Lihat jawaban saya askubuntu.com/a/790373/25388 dalam perangkat keras Raspberry Pi 3b dan sistem Raspbian Jessie. - Léo Léopold Hertz 준영


Tidak ada yang disarankan di atas bekerja dalam kasus saya (Ubuntu Server 12.04LTS). Apa yang akhirnya membantu sedang meletakkan file /etc/environment:

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

Untuk beberapa alasan itu hilang. Output untuk lokal dan perintah lainnya muncul seperti variabel didefinisikan dengan benar. Dengan kata lain, jangan anggap remeh semua hal dasar dinyatakan di mana ia harus dinyatakan.


339
2017-12-16 04:11



Ya, tidak ada yang bekerja kecuali yang ini, mungkin karena versi yang diperbarui. Tapi saya lebih suka memasukkan ini /etc/default/locale. - Naveed
Diperbarui /etc/default/locale dan tidak ada lagi peringatan. Terima kasih - ohho
Ya, yang lain tidak bekerja untuk saya. Yang ini. Berikut adalah satu-liner yang saya gunakan untuk pembaruan tanpa pengawasan ini. sudo sh -c "echo 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment" - dman
@ user163207 solusi Anda salah karena melampirkan (bukan menimpanya), bukan file yang disarankan, dan echo perlu dijalankan dengan interpretasi escape backslash diaktifkan. Ini sama dengan milik Anda tetapi dengan yang telah diperbaiki: sh -c "echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale" - glarrain
JANGAN LUPA KE LOGPUT DAN MASUK ULANG! - S.M.Mousavi


Mereka harus menghilang setelah mengeluarkan:

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

dpkg-reconfigure mengonfigurasi paket-paket setelah mereka selesai        diinstal. Berikan nama paket atau paket untuk dikonfigurasi ulang.        Ini akan menanyakan pertanyaan konfigurasi, seperti ketika paket itu        pertama kali diinstal.


139
2017-07-11 14:19



Saya senang masalah saya setahun yang lalu membantu Anda menyelesaikan masalah ini;) - Rinzwind
Bukankah seharusnya lokal ini dibuat secara default? maksudku en, en_AU, en_CA, en_GB hadir secara default tetapi tidak en_US? - Daniel Serodio
@Rinzwind Terima kasih banyak atas usaha Anda! Saya minta maaf; Seharusnya saya menuliskan pertanyaan saya lebih baik. Yang ingin saya tanyakan adalah: Mengapa perlu mengkonfigurasi ulang paket lokal setelah menghasilkan lokal baru? Menurut saya seperti lokal bahkan bekerja tanpa dpkg-reconfigure. - Victor
Menggunakan Ubuntu 14.04, dalam wadah Docker, jadi tidak ada yang diatur. Django makemessage membutuhkan ini. Ini bekerja dengan sempurna! Terima kasih. - Justin
Saya percaya itu sudo hilang. Mungkin seharusnya: sudo dpkg-reconfigure locales. Ini bekerja untuk saya setelah instalasi baru Ubunty 14.10 Desktop 64-bit. - bgoodr


Cukup tambahkan yang berikut ke Anda .bashrc file (dengan asumsi Anda menggunakan bash)

export LC_ALL="en_US.UTF-8"

108
2017-11-08 09:42



Perbaikan manis ini berhasil untuk saya pada gambar Amazon-EC2 saya (Menjalankan default RHEL AMI) Terima kasih banyak! :) - gideon
Yang ini bekerja untuk saya dengan gambar Ubuntu 12.04 digitalocean saya. - Inan Berbatov
ini memperbaiki masalah saya. Saya harus mengajukan pertanyaan: mengapa LC_ALL tidak ditetapkan oleh perintah lokal-gen sebagaimana jawaban lain katakan di atas yang satu ini? - alexserver
Aneh, semua solusi di atas tidak bekerja untuk saya tetapi yang ini berhasil! Setelah mengekspor LC_ALL Saya akhirnya bisa menggunakannya sudo dpkg-reconfigure locales. - sobi3ch
akhirnya setelah mencoba banyak trik, ini adalah yang bekerja untuk saya di kubuntu 14.04.3 lts. Terima kasih! - Jonas


Ini adalah masalah umum jika Anda terhubung dari jarak jauh, jadi solusinya adalah tidak meneruskan lokal Anda. Edit /etc/ssh/ssh_config dan berkomentar SendEnv LANG LC_* garis.


88
2017-10-01 00:45



Saya mencoba jawaban lain, tetapi lupa saya terhubung dari jarak jauh sampai saya melihat jawaban Anda. Lokal yang berbeda pada server ssh dan klien menyebabkan masalah. - Hieu
Pada OSX (menghubungkan ke ubuntu) ada di /etc/ssh_config - Michiel de Mare
Satu-liner untuk melakukan ini: sed -e '/SendEnv/ s/^#*/#/' -i /etc/ssh/ssh_config (berguna untuk penyediaan server) - Albin
Saya tidak bisa mengatur LC_ALL pada mesin lokal tetapi memperbaiki masalah saya dengan server jarak jauh, terima kasih. - Alexander Shlenchack
Mungkin perlu dicatat bahwa Anda harus mengedit file di komputer lokal bukan remote. - Clashsoft


Ada perintah untuk itu:

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

Ini pembaruan /etc/default/locale dengan nilai yang disediakan.


63
2017-08-01 11:51



Ini legit! Jangan lupa untuk keluar / memuat ulang shell Anda, atau Anda tidak akan melihat perubahannya. Jangan lupa untuk memeriksa jawaban yang disetujui untuk menghasilkan dan mengkonfigurasi ulang lokal. - Erik Zivkovic
Lari locale masih tidak menunjukkan nilai utf apa pun. - Cerin
@Cerin: Myybe, panggilan ke locale-gen hilang. Sebelumnya, yang harus dilakukan apt-get install locales. - koppor
Ini tidak akan mengubah LANG untuk shell root pada Ubuntu 16.04, karena ini ditolak di /root/.profile. - Willem


Apa yang berhasil bagi saya pada 12.10 adalah ini:

apt-get install language-pack-en-base  

Ini setelah dpkg-reconfigure locales tidak menghasilkan hasil.


30
2018-04-28 02:01



Ini adalah jawaban terbaik. Bukannya lokasi saya tidak disetel dengan benar, tetapi sebenarnya tidak ada. Saya pikir ini mirip dengan masalah OP juga ("Tidak ada file atau direktori" cukup jelas jika lokal Anda aku s set kanan!). - Breakthrough
Saya mendapatkan masalah OPs setiap kali saya menggunakan apt-get pada Ubuntu 12.04 Ini menyelesaikannya dengan sempurna tanpa harus mengedit file apa pun. - Deepend
"language-pack-en-base sudah menjadi versi terbaru." - karlingen
Logout dan Login dapat membantu - S.M.Mousavi
Bekerja untuk saya di ubuntu chroot di bawah debian. Terima kasih :) - Wyatt8740


Jangan lupa keluar dari sesi SSH Anda (atau X11 Anda) dengan keluar dan masuk kembali. Semua saran ini tidak bekerja untuk saya kecuali saya masuk kembali ....


16
2017-09-26 06:51



Komentar ini harus mendapatkan lebih banyak upvote atau setidaknya fakta perlu disorot dalam setiap jawaban. - ni8mr


Untuk Ubuntu 12.10 tidak ada yang di atas bekerja kecuali untuk solusi ratzs. Saya sarankan menambahkan ini ke file /etc/bash.bashrc Anda:

export LC_ALL="en_ZA.UTF-8"
export LC_CTYPE="en_ZA.UTF-8"

11
2018-03-27 03:19



Dari semua solusi di atas. Hanya ini yang berhasil bagiku. - JohnnyQ


Saya terjebak dalam keadaan aneh di mana mesin lokal saya diatur es dan mesin jarak jauh (via vagrant) telah ditetapkan dalam keadaan yang tidak ditangani. Oleh karena itu, saya harus menggunakan manual export= hanya untuk memudahkan sukses dpkg-reconfigure. Maka sistemnya baik-baik saja.

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

11
2018-03-22 18:02



Terbaik! Disebabkan oleh dpkg-recofigure menampilkan mojibake. - Orient


Saya menulis a skrip bash untuk memperbaiki masalah di atas. Jawaban di atas berguna tetapi menetapkan variabel lokal hanya dengan mengekspor nilai dalam variabel shell hanya akan berfungsi untuk sesi. Saya secara permanen memecahkan masalah ini dengan mengekspor variabel lokal dalam file .bash_profile. Anda juga bisa menggunakan /etc/profile file bukan .bash_profile.

echo "export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8">>~/.bash_profile

Jangan lupa untuk source itu .bash_profile dan ikuti naskah di setup mudah.


9
2018-02-27 19:26