LC_CTYPE varsayılan yerel ayara ayarlanamıyor: Böyle bir dosya veya dizin yok


54

Bu konuda kesin bir sorum var ama çözüm yok. Denedim ama işe yaramadı

Yerel sorunumu nasıl düzeltirim?

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

$ locale -a
locale: Cannot set LC_CTYPE to default locale: No such file or directory
C
C.UTF-8
en_US.utf8
POSIX

Bu en_US.UTF-8 ve en_US.utf8 uyumsuzluğu nedeniyle mi?

Nasıl düzeltilir?


Yanıtlar:


53

Terminali açın ve aşağıdaki komutu çalıştırın:

export LC_ALL="en_US.UTF-8"

Bu işe yarıyor ama neden?
Yu Jiaao,

16
Bu oturum sonunda değişken tahrip olduğundan bu hiçbir şeyi çözmez ..
Etienne Gautier


Çok az kelimeyle harika bir çözüm. Lol!
Redbob

1
Bu var ihracat yaparken alıyorum:-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
nnyby

36

Bu aynı sorun (LC_CTYPE = UTF-8, bu yanlış), Mac’ten bir linux kutusuna ssh üzerinden giriş yaptığınızda gerçekleşebilir ve terminaliniz ortam değişkenlerini otomatik olarak ayarlar. Bunun için bir onay kutusu var. İşaretini kaldırın ve gitmeniz iyi olur. İTerm'de profilde-> Terminal Sekmesi.


2
iTerm'de "Tercihler> Profiller> Varsayılan> Terminal> Çevre> Yerel değişkenleri otomatik olarak ayarla" onay kutusunu devre dışı
bırakın

1
-1: Bu işe yarayabilir, ancak son derece invaziv. Ayrıca, yerel terminalinizin davranışını ve bağlandığınız her ana bilgisayarın davranışını da potansiyel olarak etkileyebilirsiniz. Bulgularınız doğru olsa da, ssh_config'ü, problemi olduğu bilinen ana bilgisayarlara LC_ * göndermemesi için kullanmak daha iyi bir fikirdir.
Max,

3
Lütfen kendi cevabınızı ekleyebilir, bunun neden yerel terminalinizin davranışını etkileme potansiyeli ve bunun ssh_config'e LC_ * göndermemesini nasıl söyleyeceğinize dair daha fazla açıklama yaparak genişletebilir misiniz? Çünkü gerçek açıklama olmadan cevabımı sadece -1.
raarts,

MacOS'tan Terminal'i kullanarak bağlanıyorsanız, Terminal Settings> Advanced'e gidin ve "Başlangıçta yerel ortam değişkenlerini ayarla" seçeneğinin işaretini kaldırın.
Ocak'ta javaxian

Olduğu gibi görünüyor: yerel sisteminizde bazı yerel ayarları yüklediniz, daha sonra bu yerel ayarı kurulu olmayan başka bir sisteme ssh edin. Terminal istemcisi, uzaktaki sisteme yerel ayarınızın ne olduğunu söyler ve uzaktaki sistem istenen dilde yanıt vermez. Bunu düzeltmenin iki yolu vardır: ya değiştirirsiniz, ne talep edilir ya da istenen yerel ayarı uzaktaki sisteme eklersiniz (bu, kök erişimi gerektirir).
Jan

27

Benzer bir sorun vardı ve dosyama aşağıdaki satırları ekledik /etc/default/locale:

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

Bu yazıdan şunu aldım: Yerel sorunumu nasıl düzeltirim?


3
Bunu yaparak çok dağınık bir yerel ayar elde edersiniz. /etc/environmentUbuntu'da yerel ayarları belirlemek için tasarlanmamıştır; /etc/default/localedır-dir. Ayrıca, bir masaüstü durumunda asla ve asla LC_ALLkalıcı olarak ayarlamamalısınız . Yolunuz, Dil Desteği gibi bir masaüstündeki dil / yerel ayarları kontrol etmek için UI'leri kullanışsız hale getirecektir.
Gunnar Hjalmarsson

Bu aslında işe yarıyor. Yeniden başlattıktan sonra.
TranslucentCloud

Çıkış ve Giriş, çalışması gerekir
Sand1512


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

Soruda olduğu gibi yakın çevreye sahip bir Vultr örneği çalıştırıyordum, çevreye baktım ve her şey yolunda görünüyordu. Ancak, sudo dpkg-reconfigure localeseksik olması gereken bir şey yaptım. Benim ssh oturumlarım şimdi tamam. Teşekkürler!
Jonas

6

localeKomutun çıktısı, ortamınızda şu yanlış çizginin bulunduğunu gösterir:

LC_CTYPE="UTF-8"

("UTF-8" geçerli bir yerel ayar değil.)

Genellikle geliyor /etc/default/locale. Lütfen oradaysa o satırı kaldırın ve yeniden ekleyin.

Oradan gelmezse, kabuk yapılandırmanızdan veya SSH üzerinden uzaktan oturum açtıysanız, istemci makinenin yapılandırmasından gelebilir.


LC_CTYPE’yi utf8 olarak değiştirir miyim?
Mave

@Lucas: Hayır, bu kadar kötü olurdu. LANG ayarlandığından, LC_CTYPE ile başlayan tüm satırı kolayca kaldırabilirsiniz.
Gunnar Hjalmarsson

LC_TYPE ayarlamak isterseniz, onu "en_US.UTF-8" olarak da ayarlamalısınız.

İstemci makinesinin yapılandırmasından geliyorsa, sunucuya yerel ayarı ekleyebilirsiniz dpkg-reconfigure locales.
Paul Rougieux

5

Bu komut hayatımı kurtardı

sudo echo "LC_ALL=en_US.UTF-8" >> /etc/environment
sudo echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
sudo echo "LANG=en_US.UTF-8" > /etc/locale.conf
sudo locale-gen en_US.UTF-8

5
Dosyalar daha önce açıldı sudo. Yönlendirmeler, siz kök olmadıkça çalışmaz.
Martin Thornton

3

/ Etc / default / locale dosyasının ek (ancak gereksiz) satırları olabilir: Örnek dosya şöyle görünebilir:

#  File generated by update-locale
LANG=en_US.UTF-8
LANGUAGE="en_IN:en

Yerelleri sıralamak ve başarılı bir şekilde oluşturmak ve yeniden yapılandırmak için aşağıdakiler dışında bu dosyadaki tüm satırları kaldırın veya yorumlayın:

LANG=en_US.UTF-8

Dosya sonunda şöyle görünmeli:

#  File generated by update-locale
LANG=en_US.UTF-8
# LANGUAGE="en_IN:en

Bundan sonra dpkg-reconfigure locales, yerel ayarı seçmeniz istendiğinde, en_US.UTF-8 komutunu seçin ve gitmeniz iyi olur. Generation complete.İşlem tamamlandığında bir mesaj alacaksınız .


0

Ben yeni bir makineye ana dizin nokta dosyaları geçiş yaparken kendimi bu neden başardı ve ben için dosyaları aramak dolayı bir süre nedenini belirlemek için başarısız oldu LC_ama LOC.

~/.bashrcBen kopyalanan dosya aşağıdaki vardı:

export LOCPATH=/var/guix/profiles/per-user/root/guix-profile/lib/locale

(Buradaki özel değer, eski makinede GNU Guix ile yapılan önceki deneylerden kaynaklanıyordu; ancak ilgili gerçek, çevre değişkeninin şimdi geçersiz bir yola ayarlanmış olmasıdır.)

Bu, çeşitli programları çalıştırırken aşağıdaki hatayı verdi:

Warning: locale not supported by C library, locale unchanged

Ve bu hataları çalıştırırken locale:

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

LOCPATHÇizgiyi kaldırmak (veya yorumlamak) sorunlarımı çözdü.


0

Sadece aşağıdakileri çalıştırın:

sudo apt-get upgrade

tüm konumlarını oluşturacak, sonra varsayılanı ABD olarak ayarlayacaktır:

export LC_ALL="en_US.UTF-8"
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.