Masalah Tidak dapat mengatur lokal; pastikan $ LC_ * dan $ LANG benar!

49

Ketika saya selalu mencoba menginstal paket baru, saya menerima pesan ini:

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

OS saya adalah Debian Jessie 8.3 (Mate) menggunakan bahasa Inggris dengan keyboard Prancis. Saat saya mengetik lokal, saya mendapatkan ini:

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=
Ismail Sensei
sumber

Jawaban:

62

Debian mengirimkan lokal dalam bentuk sumber. Mereka perlu dikompilasi secara eksplisit. Alasan untuk ini adalah bahwa kompilasi lokal menggunakan lebih banyak ruang disk, tetapi kebanyakan orang hanya menggunakan beberapa dari mereka.

Jalankan dpkg-reconfigure localessebagai root, pilih lokal yang Anda inginkan dalam daftar (dengan pengaturan Anda, Anda perlu en_GBdan en_US.UTF-8- Saya sarankan memilih en_USdan en_GB.UTF-8juga) lalu tekan <OK>.

Atau, edit /etc/locale.gen, batalkan komentar pada baris untuk lokal yang Anda inginkan, dan jalankan locale-gensebagai root.

(Catatan: di Ubuntu, ini bekerja secara berbeda: jalankan locale-gendengan locales yang ingin Anda hasilkan sebagai argumen, mis sudo locale-gen en_GB en_US en_GB.UTF-8 en_US.UTF-8.)

Atau, Debian sekarang memiliki paket locales-allyang dapat Anda instal alih-alih locales. Ini memiliki semua lokal yang dibuat sebelumnya. The downside adalah bahwa mereka menggunakan lebih banyak ruang disk (112MB vs 16MB)

Gilles 'SANGAT berhenti menjadi jahat'
sumber
1
Itu berhasil, tetapi hanya setelah saya logout dan kemudian login lagi.
Forivin
Bekerja untuk saya juga!
Jamie Ivanov
pengeditan /etc/locale.gentidak melakukan pekerjaan untuk saya (melakukan logout / masuk), tetapi locale-genmenyelesaikan tmux: need UTF-8 locale (LC_CTYPE)masalah saya padaDebian 4.9.82
eapo
2
@eapo Seperti yang saya nyatakan dalam jawaban saya, Anda perlu mengedit /etc/locale.gen dan kemudian menjalankan locale-gen.
Gilles 'SANGAT berhenti menjadi jahat'
Saya melewatkan sedikit tentang mengaktifkan en_US.UTF-8juga dan lokal Anda sendiri. Saya menemukan cara yang sulit kemudian berputar kembali ke sini untuk membuat jawaban saya sendiri sebelum menyadari itu ada di sini selama ini.
Alastair McCormack
19

Solusi teratas tidak membantu dalam kasus saya, jadi saya menggunakan yang ini:

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

Setelah itu, saya keluar dan masuk dan kesalahan hilang.

ssasa
sumber
2
Menggunakan LC_ALL sangat tidak disarankan karena menimpa segalanya. Silakan gunakan hanya saat pengujian dan tidak pernah mengaturnya dalam file startup. sesuai: wiki.debian.org/Locale
Pitone Maledetto
6

Perintah-perintah ini menyelamatkan hidupku

# 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
Taras Vaskiv
sumber
6

Jika Anda mengalami masalah ini pada pi raspberry (atau lainnya?) Dan Anda mendapatkan kesalahan saat Anda ssh ke pi ada 2 solusi lain

Salah satunya adalah mengedit /etc/ssh/sshd_configpi dan mengomentari baris

AcceptEnv LANG LC_*

sebagai contoh sudo nano /etc/ssh/sshd_config

Setelah itu Anda harus me-restart server ssh

sudo systemctl restart ssh

Yang lain ada di mesin klien Anda ( bukan pi ) edit /etc/ssh/ssh_config(jalur berbeda dari atas) dan komentari barisnya

SendEnv LANG LC_*
gman
sumber
Kedua hal ini tidak disarankan untuk saya tetapi masalah masih muncul. (RPi3, macOS10.14)
jorijnsmit
Komentar keluar garis sekarang. Tidak benar-benar memiliki kesempatan untuk menguji tetapi terdengar lebih logis dengan cara ini ... Terima kasih.
jorijnsmit
2

Anda perlu menginstal paket locales(atau locales-alllokal en_GB, tergantung pada versi Debian yang Anda miliki).

Sebuah solusi untuk tidak memiliki kesalahan tersebut: set LANG=Cke akar, sehingga akan menggunakan no lokal.

Giacomo Catenazzi
sumber