CentOS 6 dan kesalahan lokal

16

Saya baru saja menginstal CentOS 6 dan setiap kali saya masuk ke sistem melalui SSH jarak jauh, saya mendapatkan kesalahan berikut:

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

Ketika saya mengetik "lokal" di baris perintah, saya mendapatkan output berikut:

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=

Apa yang bisa menjadi masalah? Bagaimana saya bisa mengatasi masalah ini?

Cem
sumber
solusi Anda untuk mengomentari SendEnv LANG LC_ * arg bekerja untuk saya di Mac OS X 10.7.5

Jawaban:

10

Di server Anda ssh dari apakah Anda memiliki set lokal melalui variabel lingkungan? Dalam melihat instalasi CentOS 6 saya, satu-satunya lokal yang dapat saya temukan didukung diidentifikasi sebagai en_US.utf8(ditemukan menggunakan locale -aperintah). Mungkinkah ini masalahnya?

Dalam pengujian saya, ketika saya mengatur LC_ALLvariabel lingkungan ke en_US.UTF-8, ssh'd ke server, output dari perintah lokal saya diatur ke POSIXdalam kasus saya. Ini sama seperti ketika saya TIDAK mengatur (mis. Tidak disetel) LC_ALLvariabel sebelum ssh'ing.

Ketika saya mengatur LC_ALLvariabel saya ke en_US.utf8atau en_US.utf-8, ssh'd ke kotak CentOS 6 saya, output lokal sama dengan apa yang ditetapkan pada kotak sumber.

Perhatikan saya juga tidak menggunakan topi untuk UTF.

mdpc
sumber
11
Ngomong-ngomong, saya perhatikan bahwa ini terjadi dari pengaturan ssh Mac OS X Lion saya. Saya mengedit file / etc / ssh_config dan berkomentar SendEnv LANG LC_ *. Itu memecahkan masalah saya.
Cem
@ Cem Terima kasih atas tipnya, ini memang memperbaikinya pada Mac OS X Lion.
Zsolt Török
17

Selesaikan ini dengan menonaktifkan "Setel variabel lingkungan lokal saat startup" di Terminal Settings> Advanced sesuai screenshot ini.

masukkan deskripsi gambar di sini

CATATAN: Jika Anda menggunakan iTerm2, Anda dapat menonaktifkan opsi "Setel variabel lokal secara otomatis" di Preferensi> Profil> Terminal

Nils
sumber
1
Ini berhasil untuk saya. Secara khusus, Terminal.app sedang mengatur "LC_CTYPE = UTF-8" yang kemudian menyebabkan kesalahan yang dilaporkan oleh OP. Atau, unset LC_CTYPEatau export LC_CTYPE=en_US.UTF-8fixup masalah setelah login.
tardate
Ini menyelesaikannya untuk saya, thx
pjvds
11

Cara sederhana:

Menambahkan

 LC_CTYPE="en_US.UTF-8"

untuk /etc/sysconfig/i18n.

gpupo
sumber
Ini bekerja untuk saya, setelah banyak percobaan.
Tommy
2

Apa yang berhasil bagi saya adalah menambahkan symlink di server CentOS seperti ini:

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

Setelah Anda melakukan itu perintah seperti pekerjaan ini:

export LC_CTYPE=UTF-8

Jika tidak, perintah terakhir ini gagal karena kesalahan ini:

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

Sekarang, solusi yang lebih sederhana adalah dengan menambahkan baris ini ke / etc / bashrc di server:

export LC_CTYPE="en_US.utf8"
gnrfan
sumber
Terima kasih atas masukannya! ini bekerja sangat bagus. Akhirnya dapat menghapus komentar yang mengganggu itu ...
cristobal
2

Saya mendapat pesan khusus ini, ketika masuk dari Solaris X ke host 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

Masalahnya berasal dari 2 pengaturan:

  1. Dalam ssh_config sistem default saya, saya meminta sistem untuk mengirimkan variabel tersebut.

Kirim variabel lingkungan terkait-lokal SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES

  1. Di host sumber saya, pengaturannya diatur seperti ini:

    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_FR.UTF-8 LC_MESSAGES = fr.UTF-8 =ALL_ALL

Tetapi, seperti yang Anda lihat, LC_MESSAGES, disetel ke fr.UTF-8, yang bukan merupakan opsi pada host tujuan saya.

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

Masalahnya dipecahkan dengan memaksa pada host sumber saya, pada .bash_profile: # export LC_ALL = fr_FR.UTF-8 export LANG = fr_FR.UTF-8

Saya bisa menyelesaikannya dengan meminta dest dest saya untuk tidak mengambil variabel ini dari koneksi ssh apa pun (umumnya, atau dengan membuat file lokal ssh_config untuk pengguna saya)

Kaalahaan
sumber
1

Pada sistem Centos 6.2 lokal: Ini tidak membantu:

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

Ini berhasil:

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

Saya juga dihapus locale-archivedi /usr/lib/locale. Saya tidak tahu apakah ini perlu.

BobM
sumber
1

Ini adalah perbaikan saya di masa lalu untuk kesalahan lokal.

Jalankan yang berikut: locale-gen

Kemudian edit /etc/locale.gen. Pastikan yang berikut ini tidak dikommentasikan:

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

generate locale

locale-gen
Thomas Vincent
sumber
1

Dengan Iterm2 , berbeda.
Pergi ke Iterm2 -> Preferences, Lalu Pergi ke Profilestab, dan pilih Terminaltab dari bawah.
Buka Environmentkategori, dan hapus tanda;

Setel variabel lokal secara otomatis

Akhirnya, tutup dan mulai sesi baru.

masukkan deskripsi gambar di sini

crsuarezf
sumber
0

dan pastikan LC_ALL="en_US.UTF-8"ada di atau ditambahkan ke / etc / sysconifg / i18n

contoh konten

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

sunting /etc/sysconfig/i18n

Ubah LANG="us"keLANG="en_US"

Simpan dan keluar, keluar dan kembali.

NateDJ
sumber