Yerel sorunumu nasıl düzeltirim?


506

Her seferinde bir servisi başlatmak veya durdurmak gibi bir şey yaptığımda bu mesajı alıyorum.

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   

Bu hatayı nasıl düzeltirim?




Tüm kullanıcılar için kolay ve kalıcı düzeltme: askubuntu.com/questions/881742/…
Galvani

Yanıtlar:


513

Öncelikle locale, geçerli kullanıcı hesabı için şu anda tanımlanmış olan yerel ayarları listelemek için:

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

Ardından, eksik yerel ayarı oluşturun ve dikkat çekmek için yerel ayarları yeniden yapılandırın:

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

Artık hiçbir hata görmeyeceksiniz!


220
benim için işe yaramadı
Umair

4
Bu benim için birkaç sistemde çalıştı. Yeni kurulan sistemlerde bu sorunu önlemenin bir yolu var mı?
Brylie Christopher Oxley

13
@UmairAyub, bilinmeyen birden fazla yerel ayarınız olabilir, şunu deneyin: $ için y için (locale | cut -d '=' -f 2 | sort | uniq); bitmiş Eğer sahip her tanımı için bir yerel ayar üretecektir
Ivan Buttinoni

3
Çıkış ve Giriş yardımcı olabilir
SMMousavi

4
@Umair Bu problemde yüksek insan hatası riski vardır. Sisteminiz en_GBvarsayılan olarak ayarlandı, ancak siz ayarladınız en_US. El ile yorum yapmak zorunda en_GBve yorumsuz en_USiçinde /etc/locale.gen. Cevabımı bkz . Askubuntu.com/a/790373/25388 donanım Raspberry Pi 3b ve sistem Raspbian Jessie.
Léo Léopold Hertz 준영

366

Yukarıda önerilen hiçbir şey benim durumumda işe yaramadı (Ubuntu Server 12.04LTS). Nihayet yardımcı olan dosyaya koymak oldu /etc/environment:

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

Bazı nedenlerden dolayı eksikti. Yerel ayarların ve diğer komutların çıktıları değişkenlerin uygun şekilde tanımlandığı gibi görünüyordu. Başka bir deyişle, kabul edilmediği takdirde, bütün temel hususlar, ilan edilmesi gereken yerde ilan edilir.


115
Evet, belki de güncellenmiş sürüm nedeniyle, bunun dışında hiçbiri çalışmadı. Ama bunu koymak yerine tercih ederim /etc/default/locale.
Naveed

27
Güncelleme /etc/default/localeve daha fazla uyarı yok. Teşekkürler
ohho

7
Evet, diğerleri benim için işe yaramadı. Bu yaptı. İşte bu katılımsız güncelleme için kullandığım tek astar. sudo sh -c "echo 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"
dman

12
@ user163207, çözümün yanlış olduğu için (üzerine yazmak yerine) önerilen bir dosya değil ve echoetkin olan ters eğik çizgi çıkışlarının yorumlanmasıyla çalıştırılması gerektiğinden yanlış. Bu sizinkilerle aynıdır ancak yukarıda belirtilenler geçerlidir:sh -c "echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale"
glarrain

13
GİRİŞ YAPMAYI VE YENİDEN GİRİŞİ UNUTMAYIN!
SMMousavi

149

Yayınladıktan sonra kaybolmaları gerekir:

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

dpkg-reconfigurepaketleri kurulduktan sonra yeniden yapılandırır. Yeniden yapılandırmak için bir paketin veya paketlerin adlarını iletin. Paket ilk yüklendiğinde olduğu gibi yapılandırma soruları soracaktır.


9
Bir yıl önce dertlerimi bu hale getirmenize yardımcı olduğum için memnunum;)
Rinzwind

1
Bu yerel ayar varsayılan olarak oluşturulmamalı mı? Yani en, en_AU, en_CA, en_GBvarsayılan olarak mevcut değil en_US?
Daniel Serodio

@Rinzwind Çaba için teşekkürler! Özür dilerim; Sorumu daha iyi ifade etmeliydim. Sormak istediğim şudur: Yeni yerel ayarlar oluşturduktan sonra yerel paketini yeniden yapılandırmak neden gerekli? Görünüşe göre yerel olmayanlar bile çalışıyor dpkg-reconfigure.
Victor,

Bir Docker konteynerinde Ubuntu 14.04 kullanarak, hiçbir şey ayarlanmadı. Django'nun buna makemessageihtiyacı var. Bu mükemmel çalıştı! Teşekkürler.
Justin,

1
Raspbian'ın burada kapsam dışı olduğunu fark ettim, ancak daha önce LC_ALLdoğru bir şekilde kurulup oturumu kapatmam gerektiğinden bahsetmem gerektiğini düşündüm .
MatrixManAtYrService

119

Sadece aşağıdakileri .bashrcdosyanızı ekleyin (bash kullandığınızı varsayarak)

export LC_ALL="en_US.UTF-8"

2
Bu tatlı düzeltme benim için Amazon-EC2 resminde işe yaradı (varsayılan RHEL AMI'leri kullanıyordu) Çok teşekkürler! :)
gideon

Bu benim için digitalocean'ın Ubuntu 12.04 resmi ile çalıştı.
İnan

2
bu benim sorunumu çözdü. Bir soru sormak zorundayım: LC_ALL nasıl yukarıda belirtilen diğer cevaplar gibi yerel-gen komutu tarafından ayarlanmadı?
alexserver 21:15

Garip, yukarıdaki tüm çözümler benim için işe yaramadı ama bu yaptı! İhracattan sonra LC_ALLsonunda kullanabilirim sudo dpkg-reconfigure locales.
sobi3ch

Sonunda pek çok püf noktası denedikten sonra, bu benim için kubuntu 14.04.3 lt. Teşekkürler!
Jonah

94

Uzaktan bağlanıyorsanız bu yaygın bir sorundur, bu nedenle çözüm yerel ayarlarınızı iletmemektir. Satırı düzenleyin /etc/ssh/ssh_configve yorumlayın SendEnv LANG LC_*.


6
Başka cevaplar deniyordum, ama cevabınızı görene kadar uzaktan bağlantı kurduğumu unuttum. Ssh sunucusundaki ve istemcideki farklı yerel ayarlar soruna neden oluyordu.
Hieu

2
OSX’de (ubuntu’ya bağlanıyor) şu anda/etc/ssh_config
Michiel de Mare

Bunu yapmak için bir astar: sed -e '/SendEnv/ s/^#*/#/' -i /etc/ssh/ssh_config(sunucu sağlama için kullanışlıdır)
Albin

Yerel makinede LC_ALL ayarlayamadım ama uzak sunucudaki sorunumu düzeltti, teşekkürler.
Alexander Shlenchack

1
Muhtemelen yerel makinedeki dosyayı uzaktan kumandadan düzenlemelisiniz.
Clashsoft

72

Bunun için bir komut var:

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

/etc/default/localeSağlanan değerlerle güncellenir .


4
Bu yasal! Kabuğunu kapatmayı / yeniden yüklemeyi unutma, yoksa değişiklikleri göremezsin. Yerelleri oluşturmak ve yeniden yapılandırmak için onaylanan cevabı kontrol etmeyi unutmayın.
Erik Zivkoviç

1
localeHala çalıştırmak hiçbir utf değeri göstermiyor.
Cerin

@Cerin: Myybe, bir çağrı locale-geneksik. Önceden, bir yapmak zorunda apt-get install locales.
koppor,

1
Bu, /root/.profile dosyasında geçersiz kılındığından Ubuntu 16.04'teki kök kabuğu için LANG'ı değiştirmez.
Willem,

32

12.10'da benim için çalışan şey şuydu:

apt-get install language-pack-en-base  

Bu dpkg-reconfigure localessonuç vermedi sonra yapıldı .


2
Bu en iyi cevap. Yerel ayarlarım yanlış ayarlandı, ancak aslında yoktu. Bunun OP'nin sorununa da benzer olduğunu düşünüyorum (yerel ayarınız doğru ayarlanmışsa "Böyle bir dosya veya dizin yok" oldukça açıktır !).
Atılım

1
Her zaman Ubuntu'da apt-get kullandığımda OPs sorununu yaşıyordum 12.04 Bu, herhangi bir dosyayı düzenlemek zorunda kalmadan mükemmel şekilde çözdü.
Haziran’da

"language-pack-en-base zaten en yeni sürüm."
karlingen 7

Çıkış ve Giriş yardımcı olabilir
SMMousavi

Debian'ın chrootaltındaki bir ubuntuda benim için çalıştı . Thanks :)
Wyatt8740

18

SSH oturumunuzdan (veya X11'inizden) çıkıp tekrar giriş yaparak çıkmayı unutmayın. Bu önerilerin tümü, tekrar giriş yapmazsam benim için çalışmadı.


2
Bu yorum, her cevapta vurgulanması gereken gerçeğin daha fazla oyuna veya en azına kavuşmalıdır.
ni8mr

11

Ubuntu 12.10 için yukarıdakilerin hiçbiri ratzların çözümü dışında işe yaramadı. Bunu /etc/bash.bashrc dosyasına eklemenizi öneririz:

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

Yukarıdaki tüm çözümler arasında. Bu benim için çalışan tek şey.
JohnnyQ

11

Yerel makinemin bulunduğu tuhaf bir durumda kaldım esve böylece uzaktaki makine (üzerinden vagrant) işlenmemiş bir durumda hazırlandı. Bu nedenle, el kitabını export=yalnızca başarılı bir şekilde kolaylaştırmak için kullanmalıydım dpkg-reconfigure. O zaman sistem iyi.

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

En iyi! dpkg-recofigureMojibake görüntüler nedeniyle .
Orient

9

Yukarıdaki sorunu çözmek için bir bash betiği yazdım. Yukarıdaki cevaplar kullanışlıdır ancak yerel değişkenleri sadece kabuk değişkenindeki değerleri dışa aktararak ayarlamak sadece bir oturum için işe yarayacaktır. Yerel değişkenleri .bash_profile dosyasına aktararak bu sorunu kalıcı olarak çözdüm. Bunun /etc/profileyerine dosyayı da kullanabilirsiniz .bash_profile.

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

Unutma ve izleyin senaryoyu kolay kurulum.source.bash_profile


8

Deneyebilirsin:

export LANGUAGE=ru_RU.UTF-8
export LC_CTYPE=ru_RU.UTF-8
export LC_NUMERIC=ru_RU.UTF-8
export LC_TIME=ru_RU.UTF-8
export LC_COLLATE=ru_RU.UTF-8
export LC_MONETARY=ru_RU.UTF-8
export LC_MESSAGES=ru_RU.UTF-8
export LC_PAPER=ru_RU.UTF-8
export LC_NAME=ru_RU.UTF-8
export LC_ADDRESS=ru_RU.UTF-8
export LC_TELEPHONE=ru_RU.UTF-8
export LC_MEASUREMENT=ru_RU.UTF-8
export LC_IDENTIFICATION=ru_RU.UTF-8
export LC_ALL=ru_RU.UTF-8

nerede ru_RUsizin ülke kodudur.


7

Mevcut kabul edilmiş cevap sorun giderme stratejisinde yeterli değildir, çünkü insan hatası olabilir. Sen kurulum sistemi en_USancak var en_GBetkinleştirilmiş /etc/locale.genben iplik vardı gibi burada Ahududu Pi 3b için. Kullanılan tüm yerel ayarların etkin olmasını sağlamalısınız /etc/locale.gen.

Ben vardı en_GB.UTF-8 UTF-8sadece etkinleştirilmiş /etc/locale.gen. Orada yalnızca en_US.UTF-8 UTF-8bunun için çalıştırılan diğer komutlar nedeniyle etkinleştirmeliydim . Ben de GB’yi ve yorumsuz ABD’yi yorumladım ve her şey şimdi çalışıyor

masi@raspberrypi:~ $ sudo vim /etc/locale.gen

masi@raspberrypi:~ $ sudo locale-gen 
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.

masi@raspberrypi:~ $ sudo a2enmod rewrite && a2enmod headers && a2enmod ssl
Module rewrite already enabled
Module headers already enabled
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Module socache_shmcb already enabled
Module ssl already enabled

Şimdi, bu yerel hataları herhangi bir komutla almıyorum.

Sistem: Raspbian Jessie
Donanım: Raspberry Pi 3b


6

Dediğim gibi burada Debian Wiki , düzenleyebilir /etc/locale.genve tüm yerel ayarları eklemek sisteminizde için destek isteyen (ya satırları aktif, ben yorum olarak kullanılan biri hariç bir bütün bölgelerin listesine ancak tüm vardı). Sonra yürüt

sudo dpkg-reconfigure locales

sisteminizde yerel ayarları güncellemek için. Şimdi, eklediğiniz / yorumlamadığınız tüm yerel ayarlar /etc/locale.gensisteminizde herhangi bir uyarı olmadan kullanılabilir.


3

KDE ortamı kullanıyorsanız, setlocale.shdosyayı şurada kontrol edin ~/.kde/env/:

$ cat ~/.kde/env/setlocale.sh 
export LANG=en_US.UTF-8
export LANGUAGE=en_US:ru:en

Bu kıçımı kurtardı .... teşekkür ederim! İnanılmaz bir şey, bu yerel çöplüğün ne kadar yerleştiği ... ve dünyadaki KDE'nin iki farklı yerimi (konum için is_IS ve dil için is_IS ve var olmayan bir dilde en_EN) karıştırarak işleri nasıl berbat ettiğini? yerel)! Grmpfh.
StFS

2
  1. sudo dpkg-reconfigure"Yerel ayar" ayarları geçersiz / eşleşmiyorken yüklediğiniz uygulama için de çalıştırmanız gerekebilir .

    Sistem yerel ayarı yanlış yapılmışken kurulum yaptım vim. Daha sonra sistem yerel ayarı sabitlendiğinde vimutf-8 karakterlerini yanlış semboller olarak yanlış gösteren nanove lessbunları doğru şekilde gösteren bir durum gördüm . Koşu

    sudo dpkg-reconfigure vim
    

    sistem ayarları düzeltildikten sonra sorunu çözmek için ortaya çıktı.

  2. Daha önce de belirtildiği gibi aynı şeyi fark ettim: Değişiklikleri görünür hale getirmek için SSH bağlantısını kesmeniz / yeniden bağlamanız gerekebilir.


2

Aşağıdaki metni ~/.profilebenim için çalışıyor:

export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

Linode'da Ubuntu 16.04 LTS 64-bit sunucu kullanıyorum.


2

Bu benim için aynı problemi yaşadığımda çalıştı ( dman tarafından sağlanan çözüme dayanarak ):

sudo sh -c "echo -e 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"

URL’yi yoruma nasıl ekleyeceğimi bilemedim. @EliahKagan
pythonhunter 27:14

1
Hiç sorun değil - yorumun yanındaki tarih / zaman damgası, doğrudan bağlantı veren şeydir. ... Böylece, glarrain'in yorumunu ( >bunun yerine çağırarak) dman'ın>> bir cevabı gibi göründüğünü fark ettim . Aslında hangi yolun doğru ya da en iyisi olduğunu bilmiyorum, ancak bu konuda bir fikriniz varsa, bu cevabı daha fazla bilgi ile genişletebilirsiniz. (Yine de yapmak zorunda değilsin.)
Eliah Kagan
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.