CentOS 6 ve yerel ayar hatası


17

CentOS 6'yı yeni kurdum ve SSH üzerinden sisteme uzaktan giriş yaptığımda aşağıdaki hatayı alıyorum:

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

Komut satırına "locale" yazdığımda, aşağıdaki çıktıyı alıyorum:

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=

Sorun ne olabilir? Bu sorunu nasıl çözebilirim?


Mac OS X 10.7.5

Yanıtlar:


10

Ssh sunucunuzda ortam değişkeni üzerinden ayarlanmış bir yerel ayarınız var mı? CentOS 6 kurulumuma bakarken, bulabildiğim tek yerel ayar en_US.utf8( locale -akomut kullanılarak keşfedildi ) olarak tanımlandı . Sorun bu olabilir mi?

Testimde , LC_ALLortam değişkenini en_US.UTF-8sunucuya ssh'd olarak ayarladığımda, yerel ayar komutumun çıktısı POSIXbenim durumumda ayarlandı . Bu LC_ALLssh'ing önce değişkeni DEĞİL ayarladığım (yani ayarlamamış) ile aynıdır.

LC_ALLDeğişkeni CentOS 6 kutusuna en_US.utf8veya en_US.utf-8ssh'd olarak ayarladığımda , yerel ayarın çıktısı kaynak kutusunda ayarlananla aynı oldu.

UTF için de kapak kullanmadım.


11
Bu arada, bunun Mac OS X Lion ssh ayarlarımdan oluştuğunu fark ettim. / Etc / ssh_config dosyasını düzenledim ve SendEnv LANG LC_ * 'i yorumladım. Sorunumu çözdü.
Cem

@Cem Bahşiş için teşekkürler, bu gerçekten Mac OS X Lion'da düzeltir.
Zsolt Török

17

Bu ekran görüntüsüne göre Terminal Ayarları> Gelişmiş bölümündeki "Başlangıçta yerel ayar ortam değişkenlerini ayarla" seçeneğini devre dışı bırakarak çözüldü.

resim açıklamasını buraya girin

NOT: iTerm2 kullanıyorsanız, Tercihler> Profiller> Terminal'deki "Yerel ayar değişkenlerini otomatik olarak ayarla" seçeneğini devre dışı bırakabilirsiniz


1
Bu benim için çalıştı. Özellikle, Terminal.app daha sonra OP tarafından bildirilen hatalara neden olan "LC_CTYPE = UTF-8" ayarını yapıyordu. Alternatif olarak unset LC_CTYPEveya export LC_CTYPE=en_US.UTF-8giriş yaptıktan sonra sorunu düzeltin.
tardate

Bu benim için çözdü, thx
pjvds

12

Basit yol:

Ekle

 LC_CTYPE="en_US.UTF-8"

için /etc/sysconfig/i18n.


Birçok denemeden sonra benim için çalışıyor.
Tommy

2

Benim için işe yarayan CentOS sunucusuna şöyle bir symlink eklemekti:

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

Bunu yaptığınızda, bu komutları aşağıdaki gibi çalışır:

export LC_CTYPE=UTF-8

Bunu yapmazsanız, bu son komut bu hatayla başarısız olur:

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

Şimdi, daha basit bir çözüm bu satırı sunucudaki / etc / bashrc dosyasına eklemektir:

export LC_CTYPE="en_US.utf8"

Giriş için teşekkürler! bu gerçekten işe yaradı. Sonunda bu sinir bozucu yorumu kaldırabilir ...
cristobal

2

Solaris X'ten Centos ana bilgisayarına giriş yaptığınızda bu özel mesajı aldım.

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

Sorun 2 ayardan geliyor:

  1. Varsayılan sistemim ssh_config içinde, sistemden bu değişkeni geçirmesini istiyorum.

Yerel ayarlarla ilgili ortam değişkenlerini gönderme SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES

  1. Kaynak ana bilgisayarımda, ayarlar şu şekilde ayarlandı:

    KAYNAK # DİL = 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_COLLATE = fr_FR.UTF-8 LC_MONETARY = fr_FR.UTF-8 LC_MESAJLARI = fr.UTF-8 = LC_ALL

Ancak, gördüğünüz gibi, LC_MESSAGES, fr.UTF-8 olarak ayarlanmış, bu da hedef ana bilgisayarımda bir seçenek değil.

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

Sorun, kaynak ana bilgisayarımda, .bash_profile üzerinde zorlandı: # export LC_ALL = fr_FR.UTF-8 verme LANG = fr_FR.UTF-8

Dest ana bilgisayarımdan bu değişkeni herhangi bir ssh bağlantısından almamasını isteyerek çözebilirdim (genellikle veya kullanıcı için yerel bir ssh_config dosyası oluşturarak)


1

Yerel bir Centos 6.2 sisteminde: Bu yardımcı olmadı:

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

Bu işe yaradı:

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

Ben de silinir locale-archiveiçinde /usr/lib/locale. Bunun gerekli olup olmadığını bilmiyorum.


1

Bu, yerel ayar hataları için geçmişte düzeltmemdi.

Aşağıdakileri çalıştırın: locale-gen

Ardından /etc/locale.gen dosyasını düzenleyin. Aşağıdakilerin önerilmediğinden emin olun:

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

generate locale

locale-gen

1

İle Iterm2 farklıdır.
Git Iterm2 -> Preferences, Sonra Profilessekmeye git Terminalve alttan sekmeyi seçin . Kategoriye
gidin Environmentve işaretini kaldırın;

Yerel ayar değişkenlerini otomatik olarak ayarlama

Son olarak, yeni bir oturumu kapatın ve başlatın.

resim açıklamasını buraya girin


0

ve LC_ALL="en_US.UTF-8"/ etc / sysconifg / i18n içine eklenmiş olduğundan emin olun.

örnek içerik

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

-3

Düzenle /etc/sysconfig/i18n

Değişim LANG="us"içinLANG="en_US"

Kaydedin ve çıkın, çıkış yapın ve tekrar giriş yapın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.