Domanda Come posso risolvere il mio problema locale?


Ricevo questo messaggio ogni volta che faccio qualcosa come avviare o interrompere un servizio.

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   

Come posso risolvere questo errore?


462
2017-07-11 14:08


origine


Relazionato: Come impostare la locale? - Lucio
possibile duplicato di Le variabili locali non hanno alcun effetto nella shell remota (perl: warning: impostazione locale fallita). - Denilson Sá Maia
Correzione facile e permanente per tutti gli utenti: askubuntu.com/questions/881742/... - Galvani


risposte:


Prima corsa locale per elencare le impostazioni locali attualmente definite per l'account utente corrente:

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

Quindi generare le impostazioni locali mancanti e riconfigurare le impostazioni locali per prendere nota:

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

Ora non vedrai più alcun errore!


471
2017-12-10 12:45



Non ha funzionato per me - Umair
Questo ha funzionato per me su un numero di sistemi. C'è un modo per evitare questo problema sui nuovi sistemi installati? - Brylie Christopher Oxley
@UmairAyub potrebbe essere che hai più di un locale sconosciuto, prova questo: per y in $ (locale | cut -d '=' -f 2 | sort | uniq); fare locale-gen $ y; fatto Genererà una localizzazione per ogni definizione che hai - Ivan Buttinoni
La localizzazione in locale-gen il comando dovrebbe essere tra virgolette perché funzioni correttamente: $ sudo locale-gen "en_US.UTF-8" - Sheharyar
@Umair C'è un alto rischio di errore umano in questo problema. Il tuo sistema è configurato per en_GB per impostazione predefinita, ma l'hai impostato su en_US. Devi commentare manualmente en_GB e il non comune en_US in /etc/locale.gen. Vedi la mia risposta askubuntu.com/a/790373/25388 nell'hardware Raspberry Pi 3b e nel sistema Raspbian Jessie. - Léo Léopold Hertz 준영


Nulla di quanto sopra suggerito ha funzionato nel mio caso (Ubuntu Server 12.04 LTS). Ciò che alla fine ha aiutato stava mettendo il file /etc/environment:

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

Per qualche motivo mancava. Le uscite per le impostazioni internazionali e altri comandi sono apparse come se le variabili fossero state definite correttamente. In altre parole, non dare per scontato che tutte le cose di base siano dichiarate dove dovrebbero essere dichiarate.


339
2017-12-16 04:11



Sì, nessun altro ha funzionato tranne questo, forse a causa della versione aggiornata. Ma preferisco piuttosto inserirlo /etc/default/locale. - Naveed
aggiornato /etc/default/locale e non più avvisi. Grazie - ohho
Sì, gli altri non hanno funzionato per me. Questo ha fatto. Ecco la one-liner che ho usato per l'aggiornamento automatico di questo. sudo sh -c "echo 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment" - dman
@ user163207 la tua soluzione non è corretta perché si aggiunge (anziché sovrascrivere), non è il file consigliato e echo deve essere eseguito con l'interpretazione di escape backslash abilitato. Questo è uguale al tuo ma con il già citato: sh -c "echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale" - glarrain
NON DIMENTICARE DI LOGPUT E RE-LOGIN! - S.M.Mousavi


Dovrebbero scomparire dopo aver emesso:

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

dpkg-reconfigure riconfigura i pacchetti dopo che sono già stati        installato. Passa i nomi di un pacchetto o di pacchetti da riconfigurare.        Richiederà domande di configurazione, proprio come quando era il pacchetto        prima installato.


139
2017-07-11 14:19



Sono contento che i miei problemi un anno fa ti abbiano aiutato a risolverlo;) - Rinzwind
Non dovrebbe essere generata questa locale di default? intendo en, en_AU, en_CA, en_GB sono presenti di default ma non en_US? - Daniel Serodio
@Rinzwind Grazie mille per il tuo impegno! Mi scuso; Avrei dovuto formulare meglio la mia domanda. Quello che intendevo chiedere è: Perché è necessario riconfigurare il pacchetto locales dopo aver generato nuovi locali? Mi sembra che i locali funzionino anche senza dpkg-reconfigure. - Victor
Usando Ubuntu 14.04, in un contenitore Docker, quindi non veniva impostato nulla. Django di makemessage ha bisogno di questo Questo ha funzionato perfettamente! Grazie. - Justin
Io credo sudo manca. Forse dovrebbe essere: sudo dpkg-reconfigure locales. Questo ha funzionato per me dopo una nuova installazione di Ubuntu 14.10 Desktop 64-bit. - bgoodr


Basta aggiungere il seguente al tuo .bashrc file (presumendo che tu stia usando bash)

export LC_ALL="en_US.UTF-8"

108
2017-11-08 09:42



Questa soluzione dolce ha funzionato per me sulla mia immagine Amazon-EC2 (gestivo il loro predefinito RHEL AMI) Grazie mille! :) - gideon
Questo ha funzionato per me con l'immagine Ubuntu 12.04 del mio digitalocean. - Inan Berbatov
questo ha risolto il mio problema. Devo fare una domanda: come mai LC_ALL non è stato impostato dal comando locale-gen come altre risposte hanno detto sopra questo? - alexserver
Strano, tutte le soluzioni di cui sopra non hanno funzionato per me, ma questo ha fatto! Dopo l'esportazione LC_ALL Potrei finalmente usare sudo dpkg-reconfigure locales. - sobi3ch
finalmente dopo aver provato un sacco di trucchi, questo è il lavoro per me su Kubuntu 14.04.3 lts. Grazie! - Jonas


Questo è un problema comune se ci si connette da remoto, quindi la soluzione è di non inoltrare le impostazioni locali. modificare /etc/ssh/ssh_config e commentare SendEnv LANG LC_* linea.


88
2017-10-01 00:45



Stavo cercando altre risposte, ma ho dimenticato che stavo connettendo in remoto finché non ho visto la tua risposta. Diverse impostazioni locali sul server ssh e sul client causavano il problema. - Hieu
Su OSX (connessione a ubuntu) è a /etc/ssh_config - Michiel de Mare
One-liner per fare questo: sed -e '/SendEnv/ s/^#*/#/' -i /etc/ssh/ssh_config (utile per il provisioning del server) - Albin
Non ho potuto impostare LC_ALL sulla macchina locale, ma ha risolto il problema con il server remoto, grazie. - Alexander Shlenchack
Probabilmente vale la pena notare che è necessario modificare il file sul computer locale e non sul telecomando. - Clashsoft


C'è un comando per questo:

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

Si aggiorna /etc/default/locale con valori forniti.


63
2017-08-01 11:51



Questo è legittimo! Non dimenticare di uscire / ricaricare la tua shell, altrimenti non vedrai le modifiche. Non dimenticare di dare un'occhiata alla risposta approvata per generare e riconfigurare le impostazioni locali. - Erik Zivkovic
In esecuzione locale continua a non mostrare alcun valore di utf. - Cerin
@Cerin: Myybe, una chiamata a locale-gen manca. Prima, uno deve fare apt-get install locales. - koppor
Questo non cambierà LANG per la shell di root su Ubuntu 16.04, dato che è sovrascritto in /root/.profile. - Willem


Ciò che ha funzionato per me il 12.10 è stato questo:

apt-get install language-pack-en-base  

Questo è stato dopo dpkg-reconfigure locales non ha prodotto risultati.


30
2018-04-28 02:01



Questa è la migliore risposta. Non è che le mie impostazioni locali siano state impostate in modo errato, ma in realtà non esistevano. Penso che questo sia simile al problema dell'OP ("Nessun file o directory" è abbastanza chiaro se la tua locale è set giusto!). - Breakthrough
Stavo ricevendo il problema degli OP ogni volta che stavo usando apt-get su Ubuntu 12.04 Questo lo risolveva perfettamente senza dover modificare alcun file. - Deepend
"language-pack-en-base è già la versione più recente." - karlingen
Logout e accesso potrebbero aiutare - S.M.Mousavi
Ha funzionato per me in un ubuntu chroot sotto debian. Grazie :) - Wyatt8740


Non dimenticare di uscire dalla sessione SSH (o dal tuo X11) uscendo e ricollegandosi nuovamente. Tutti questi suggerimenti non hanno funzionato per me, a meno che non mi ricolleghi ....


16
2017-09-26 06:51



Questo commento dovrebbe ottenere più upvotes o almeno il fatto deve essere evidenziato in ogni risposta. - ni8mr


Per Ubuntu 12.10 nessuno dei precedenti ha funzionato tranne la soluzione ratzs. Raccomando di aggiungere questo al tuo file /etc/bash.bashrc:

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

11
2018-03-27 03:19



Di tutte le soluzioni sopra. Questo è l'unico che ha funzionato per me. - JohnnyQ