Vraag Hoe los ik mijn locale probleem op?


Ik ontvang deze melding elke keer als ik iets doe als het starten of stoppen van een service.

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   

Hoe los ik deze fout op?


462
2017-07-11 14:08


oorsprong


Verwant: Hoe locale instellen? - Lucio
mogelijk duplicaat van Locale-variabelen hebben geen effect in de externe shell (perl: waarschuwing: de instelling van de locale is mislukt.) - Denilson Sá Maia
Eenvoudige en permanente oplossing voor alle gebruikers: askubuntu.com/questions/881742/... - Galvani


antwoorden:


Eerste loop locale om op te geven welke talen momenteel zijn gedefinieerd voor het huidige gebruikersaccount:

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

Genereer dan de ontbrekende locale en herconfigureer locales om kennis te nemen:

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

Nu zie je geen fouten meer!


471
2017-12-10 12:45



werkte niet voor mij - Umair
Dit heeft voor mij gewerkt op een aantal systemen. Is er een manier om dit probleem te voorkomen op nieuw geïnstalleerde systemen? - Brylie Christopher Oxley
@UmairAyub heeft misschien meer dan één unknow locale, probeer dit: voor y in $ (locale | cut -d '=' -f 2 | sort | uniq); do locale-gen $ y; gedaanHet genereert een locale voor elke definitie die je hebt - Ivan Buttinoni
De locale in de locale-gen commando moet in dubbele aanhalingstekens staan ​​om dit goed te laten werken: $ sudo locale-gen "en_US.UTF-8" - Sheharyar
@ Umair Er is een hoog risico op menselijke fouten in dit probleem. Uw systeem is geconfigureerd om en_GB standaard, maar je hebt het ingesteld op en_US. Je moet handmatig reageren en_GB en uncomment en_US in /etc/locale.gen. Zie mijn antwoord askubuntu.com/a/790373/25388 in de hardware Raspberry Pi 3b en het systeem Raspbian Jessie. - Léo Léopold Hertz 준영


Niets hierboven gesuggereerd werkte in mijn geval (Ubuntu Server 12.04LTS). Wat uiteindelijk heeft geholpen legde het bestand neer /etc/environment:

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

Om de een of andere reden ontbrak het. De uitgangen voor locale en andere opdrachten leken de variabelen correct gedefinieerd te zijn. Met andere woorden, het is niet vanzelfsprekend dat alle basisdingen worden aangegeven waar het moet worden aangegeven.


339
2017-12-16 04:11



Ja, geen ander werkte behalve deze, misschien vanwege de bijgewerkte versie. Maar ik geef er liever de voorkeur aan /etc/default/locale. - Naveed
bijgewerkt /etc/default/locale en geen waarschuwingen meer. Bedankt - ohho
Ja, de anderen werkten niet voor mij. Deze deed. Hier is de one-liner die ik gebruikte voor het zonder toezicht bijwerken hiervan. sudo sh -c "echo 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment" - dman
@ user163207 uw oplossing is onjuist omdat deze wordt toegevoegd (in plaats van overschreven), is dit niet het aanbevolen bestand, en echo moet worden uitgevoerd met de interpretatie van backslash-escapes ingeschakeld. Dit is hetzelfde als het uwe maar met de bovengenoemde vaste: sh -c "echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale" - glarrain
VERGEET NIET OM IN TE LOGPEN EN WEER TE HALEN! - S.M.Mousavi


Ze zouden moeten verdwijnen na het uitgeven:

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

dpkg-reconfigure herconfigureert pakketten nadat ze al zijn geweest        geïnstalleerd. Geef het de namen van een pakket of pakketten om opnieuw te configureren.        Er worden configuratievragen gesteld, net zoals bij het pakket        voor het eerst geïnstalleerd.


139
2017-07-11 14:19



Ik ben blij dat mijn problemen een jaar geleden hebben geholpen dit probleem op te lossen;) - Rinzwind
Moet deze locale standaard niet worden gegenereerd? ik bedoel en, en_AU, en_CA, en_GB zijn standaard aanwezig, maar niet en_US? - Daniel Serodio
@Rinzwind Hartelijk dank voor uw inspanningen! Ik verontschuldig me; Ik had mijn vraag beter moeten formuleren. Wat ik wilde vragen is: waarom is het nodig om het locales-pakket te herconfigureren na het genereren van nieuwe locales? Het lijkt erop dat de locales zelfs werken zonder dpkg-reconfigure. - Victor
Met behulp van Ubuntu 14.04, in een Docker-container, werd er dus niets ingesteld. Django's makemessage heeft dit nodig. Dit werkte perfect! bedankt. - Justin
Ik geloof het sudo ontbreekt. Misschien zou het moeten zijn: sudo dpkg-reconfigure locales. Dit werkte voor mij na een nieuwe installatie van Ubunty 14.10 Desktop 64-bit. - bgoodr


Voeg gewoon het volgende toe aan uw .bashrc bestand (ervan uitgaande dat je bash gebruikt)

export LC_ALL="en_US.UTF-8"

108
2017-11-08 09:42



Deze lieve oplossing werkte voor mij op mijn Amazon-EC2-afbeelding (draaide hun standaard RHEL AMI) Heel erg bedankt! :) - gideon
Deze werkte voor mij met de Ubuntu 12.04-afbeelding van mijn digitale camera. - Inan Berbatov
dit loste mijn probleem op. Ik moet een vraag stellen: hoe komt het dat de LC_ALL niet werd ingesteld door het locale-gen commando zoals andere antwoorden hierboven zeiden? - alexserver
Raar, alle bovenstaande oplossing werkte niet voor mij, maar deze deed het! Na het exporteren LC_ALL Ik zou het eindelijk kunnen gebruiken sudo dpkg-reconfigure locales. - sobi3ch
eindelijk na het uitproberen van een hoop tricks, dit is de werkende voor mij op kubuntu 14.04.3 lts. bedankt! - Jonas


Dit is een veel voorkomend probleem als u op afstand verbinding maakt, dus de oplossing is om uw landinstelling niet door te sturen. Bewerk /etc/ssh/ssh_config en commentaar geven SendEnv LANG LC_* lijn.


88
2017-10-01 00:45



Ik probeerde andere antwoorden, maar vergat dat ik op afstand verbinding maakte totdat ik je antwoord zag. Verschillende locales op de ssh-server en client veroorzaakten het probleem. - Hieu
Op OSX (verbinding maken met ubuntu) is het ingeschakeld /etc/ssh_config - Michiel de Mare
One-liner om dit te doen: sed -e '/SendEnv/ s/^#*/#/' -i /etc/ssh/ssh_config (handig voor server-provisioning) - Albin
Ik kon LC_ALL niet instellen op de lokale machine, maar het heeft mijn probleem met de externe server opgelost, bedankt. - Alexander Shlenchack
Waarschijnlijk vermeldenswaard is dat u het bestand moet bewerken op de lokale computer en niet op de afstandsbediening. - Clashsoft


Daar is een bevel voor:

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

Het wordt bijgewerkt /etc/default/locale met opgegeven waarden.


63
2017-08-01 11:51



Dit is legitiem! Vergeet niet uit te loggen / uw shell opnieuw te laden, anders ziet u de wijzigingen niet. Vergeet niet het goedgekeurde antwoord te lezen voor het genereren en herconfigureren van landinstellingen. - Erik Zivkovic
hardlopen locale toont nog steeds geen utf-waarden. - Cerin
@Cerin: Myybe, een oproep aan locale-gen ontbreekt. Vroeger moet men het doen apt-get install locales. - koppor
Dit zal LANG voor de root shell op Ubuntu 16.04 niet veranderen, omdat het overruled wordt in /root/.profile. - Willem


Wat voor mij werkte op 12.10 was dit:

apt-get install language-pack-en-base  

Dit was na dpkg-reconfigure locales leverde geen resultaten op.


30
2018-04-28 02:01



Dit is het beste antwoord. Het is niet zo dat mijn locales verkeerd waren ingesteld, maar ze bestonden niet echt. Ik denk dat dit ook vergelijkbaar is met het probleem van de OP ("Geen bestand of map" is vrij duidelijk als je locale is rechtzetten!). - Breakthrough
Ik kreeg de OP's kwestie ooit keer dat ik apt-get op Ubuntu 12.04 gebruikte. Dit loste het perfect op zonder bestanden te hoeven bewerken. - Deepend
"language-pack-en-base is al de nieuwste versie." - karlingen
Uitloggen en inloggen kan helpen - S.M.Mousavi
Werkte voor mij in een ubuntu chroot onder debian. Bedankt :) - Wyatt8740


Vergeet niet om uw SSH-sessie (of uw X11) te verlaten door het programma te verlaten en opnieuw in te loggen. Al deze suggesties werkten niet voor mij tenzij ik me weer aanmeldde ....


16
2017-09-26 06:51



Deze opmerking zou meer upvotes moeten krijgen of ten minste het feit moet in elk antwoord worden benadrukt. - ni8mr


Voor Ubuntu 12.10 werkte niets van het bovenstaande behalve voor de oplossing van ratzs. Ik raad aan dit toe te voegen aan je /etc/bash.bashrc-bestand:

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

11
2018-03-27 03:19



Van alle bovenstaande oplossingen. Dit is de enige die voor mij werkte. - JohnnyQ


Ik zat vast in een vreemde toestand waarin mijn lokale computer is ingesteld es en dus de externe machine (via vagrant) was voorzien in een niet-afgehandelde staat. Daarom moest ik de handleiding gebruiken export= alleen om een ​​succesvolle te vergemakkelijken dpkg-reconfigure. Dan is het systeem prima.

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

11
2018-03-22 18:02



Het beste! Door dpkg-recofigure geeft Mojibake weer. - Orient


Ik schreef een bash-script om het bovenstaande probleem op te lossen. De bovenstaande antwoorden zijn handig, maar het instellen van de locale variabelen door eenvoudigweg de waarden in de shell-variabele te exporteren, werkt alleen voor een sessie. Ik heb dit probleem permanent opgelost door de locale variabelen in het bestand .bash_profile te exporteren. Je kan ook gebruiken /etc/profile bestand in plaats van .bash_profile.

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

Vergeet niet om source de .bash_profile en volg de script in eenvoudige installatie.


9
2018-02-27 19:26