Jak mogę rozwiązać problem z ustawieniami narodowymi?

453

Otrzymuję tę wiadomość za każdym razem, gdy robię coś w rodzaju uruchamiania lub zatrzymywania usługi.

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   

Jak naprawić ten błąd?

    
zadawane HackToHell 11.07.2012, 16:08
źródło

19 odpowiedzi

464

Najpierw uruchom locale , aby wyświetlić listę lokalnych ustawień dla bieżącego konta użytkownika:

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

Następnie wygeneruj brakujące ustawienia narodowe i ponownie skonfiguruj ustawienia regionalne, aby zwrócić uwagę:

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

Już nie zobaczysz żadnych błędów!

    
odpowiedział Otto Kekäläinen 10.12.2012, 13:45
źródło
333

Nic sugerowanego powyżej nie działało w moim przypadku (Ubuntu Server 12.04LTS). Co w końcu pomogło wstawiał plik /etc/environment :

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

Z jakiegoś powodu go nie było. Pojawiły się wyniki dla locale i innych poleceń, tak jak zmienne zostały poprawnie zdefiniowane. Innymi słowy, nie przyjmuj za pewnik, że wszystkie podstawowe rzeczy są zadeklarowane tam, gdzie powinny być zadeklarowane.

    
odpowiedział Marcin 16.12.2012, 05:11
źródło
139

Powinny zniknąć po wydaniu:

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

dpkg-reconfigure rekonfiguruje pakiety po ich zakończeniu        zainstalowany. Przekaż im nazwy paczki lub paczki do rekonfiguracji.        Zapyta o konfigurację, podobnie jak w przypadku pakietu        pierwszy zainstalowany.

    
odpowiedział Rinzwind 11.07.2012, 16:19
źródło
106

Po prostu dodaj poniższe do pliku .bashrc (zakładając, że używasz bash)

export LC_ALL="en_US.UTF-8"
    
odpowiedział ratz 08.11.2012, 10:42
źródło
86

Jest to powszechny problem, jeśli łączysz się zdalnie, więc rozwiązaniem nie jest przekazywanie ustawień regionalnych. Edytuj /etc/ssh/ssh_config i skomentuj linię SendEnv LANG LC_* .

    
odpowiedział user249697 01.10.2014, 02:45
źródło
61

Jest na to polecenie:

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

Aktualizuje /etc/default/locale o podane wartości.

    
odpowiedział sgtpep 01.08.2014, 13:51
źródło
29

To, co zadziałało dla mnie 12.10, było następujące:

apt-get install language-pack-en-base  

To było po tym, że dpkg-reconfigure locales nie spowodowało żadnych wyników.

    
odpowiedział George Answerology 28.04.2013, 04:01
źródło
16

Nie zapomnij zamknąć sesji SSH (lub swojego X11), wychodząc i ponownie logując się. Wszystkie te sugestie nie zadziałały, dopóki nie zaloguję się ponownie ....

    
odpowiedział Michael R. Hines 26.09.2014, 08:51
źródło
11

W Ubuntu 12.10 żaden z powyższych nie działał, z wyjątkiem rozwiązania ratzsa. Zalecam dodanie tego do twojego pliku /etc/bash.bashrc:

export LC_ALL="en_ZA.UTF-8"
export LC_CTYPE="en_ZA.UTF-8"
    
odpowiedział Lovemore Nalube 27.03.2013, 04:19
źródło
11

Utknąłem w dziwnym stanie, w którym moja maszyna lokalna jest ustawiona na es , więc zdalna maszyna (przez vagrant ) została dostarczona w stanie nieobsługiwanym. Dlatego musiałem użyć podręcznika export= , aby ułatwić udane dpkg-reconfigure . Wtedy system jest w porządku.

export LC_ALL="en_US.UTF-8"
sudo dpkg-reconfigure locales
    
odpowiedział charneykaye 22.03.2016, 19:02
źródło
9

Napisałem skrypt bash , aby naprawić Powyższe odpowiedzi są użyteczne, ale ustawienie zmiennych lokalnych poprzez proste eksportowanie wartości w zmiennej powłoki będzie działać tylko dla sesji. Rozwiązałem ten problem na stałe, eksportując zmienne ustawień narodowych do pliku .bash_profile. Możesz także użyć pliku /etc/profile zamiast .bash_profile .

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

Nie zapomnij o source .bash_profile i postępuj zgodnie z skrypt w łatwej konfiguracji.

    
odpowiedział Ajeet Khan 27.02.2016, 20:26
źródło
8

Możesz spróbować:

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

gdzie ru_RU to twój kod kraju.

    
odpowiedział Koss 17.06.2013, 15:34
źródło
6

Jak powiedziałeś tutaj na Wiki Debiana , możesz edytować /etc/locale.gen i dodać wszystkie lokalizacje (lub odkomentować je, Miałem listę wszystkich ustawień regionalnych, ale wszystkie z wyjątkiem tego, którego użyłem jako komentarza) chcesz mieć wsparcie w swoim systemie. Następnie wykonaj

sudo dpkg-reconfigure locales

, aby zaktualizować ustawienia regionalne w systemie. Teraz wszystkie lokalizacje dodane / odkomentowane w /etc/locale.gen są dostępne w systemie bez ostrzeżeń.

    
odpowiedział msrd0 14.12.2014, 12:28
źródło
6

Bieżąca zaakceptowana odpowiedź nie jest wystarczająca w strategii rozwiązywania problemów, ponieważ możesz mieć ludzki błąd. Ustawiłeś system na en_US , ale masz en_GB włączone w /etc/locale.gen , tak jak miałem w wątku tutaj dla Raspberry Pi 3b. Powinieneś mieć wszystkie włączone lokalne lokalizacje w /etc/locale.gen .

Mam en_GB.UTF-8 UTF-8 tylko włączone w /etc/locale.gen . Powinienem tam włączyć tylko en_US.UTF-8 UTF-8 z powodu innych poleceń uruchamianych dla niego. Więc skomentowałem GB i odkomentowałem USA i wszystko działa teraz

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

Teraz nie otrzymuję tych błędów locale z żadnymi poleceniami.

System: Raspbian Jessie
Sprzęt: Raspberry Pi 3b

    
odpowiedział Léo Léopold Hertz 준영 22.06.2016, 22:25
źródło
3

Jeśli używasz środowiska KDE, sprawdź plik setlocale.sh w ~/.kde/env/ :

$ cat ~/.kde/env/setlocale.sh 
export LANG=en_US.UTF-8
export LANGUAGE=en_US:ru:en
    
odpowiedział MaximKostrikin 05.02.2014, 09:36
źródło
2
  1. Konieczne może być uruchomienie sudo dpkg-reconfigure również dla aplikacji, którą zainstalowałeś, a ustawienia "narodowe" są niepoprawne / niezgodne.

    Chociaż ustawienia regionalne systemu były niepoprawnie ustawione, zainstalowałem vim . Później, gdy ustalono ustawienia regionalne systemu, zobaczyłem sytuację, w której vim pokazywał niepoprawnie znaki utf-8 jako dziwne symbole, a nano i less pokazywały je poprawnie. Uruchamianie

    sudo dpkg-reconfigure vim
    

    pojawił się, aby naprawić problem po naprawieniu ustawień systemu.

  2. Zauważyłem też to samo, co już wspomniałem: może być konieczne odłączenie / ponowne połączenie SSH, aby zmiany były widoczne.

odpowiedział ajaaskel 18.12.2014, 20:02
źródło
2

Dodanie następującego tekstu do ~/.profile działa dla mnie:

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

Używam 64-bitowego serwera Ubuntu 16.04 LTS w Linode.

    
odpowiedział Jingguo Yao 09.05.2017, 05:07
źródło
1

To działało dla mnie, gdy miałem ten sam problem (na podstawie rozwiązania dostarczone przez dman ):

sudo sh -c "echo -e 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"
    
odpowiedział pythonhunter 27.08.2014, 07:21
źródło
1

Wystąpił problem z uruchomieniem motywu "Agnoster" z oh-my-zsh na mojej stacji roboczej docker iz innymi komunikatami o błędach. (Jest szybszy niż wsl IMO i mogę zamontować docker.sock w tym kontenerze za pomocą Hyper-V VM zarządzanego przez Docker For Windows , co pozwala mi robić rzeczy doków)

Łącząc niektóre sugestie z odpowiedzi pomogło mi to naprawić.

Dodałem to do mojego Dockerfile

RUN apt-get install -y locales
RUN sudo locale-gen "en_US.UTF-8"
RUN echo 'LANG="en_US.UTF-8"' > /etc/profile.d/locale.sh
RUN echo 'LANGUAGE="en_US.UTF-8"' >> /etc/profile.d/locale.sh
RUN echo 'LC_ALL="en_US.UTF-8"' >> /etc/profile.d/locale.sh

Tutaj jest sedno, jeśli chcesz spróbować.

    
odpowiedział sdkks 30.06.2018, 16:25
źródło

Przeczytaj inne pytania na temat tagów