CentOS 6 ed errore di localizzazione


16

Ho appena installato CentOS 6 e ogni volta che accedo al sistema tramite SSH in remoto, viene visualizzato il seguente errore:

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)

Quando digito "locale" sulla riga di comando, ottengo il seguente output:

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

Quale può essere il problema? Come posso risolvere questo problema?


la tua soluzione per commentare SendANG LANG LC_ * arg ha funzionato per me su Mac OS X 10.7.5

Risposte:


10

Sul server da cui ssh hai una locale impostata tramite una variabile d'ambiente? Guardando la mia installazione di CentOS 6, l'unica localizzazione che posso trovare supportata viene identificata come en_US.utf8(scoperta usando il locale -acomando). Potrebbe essere questo il problema?

Nel mio test, quando ho impostato la LC_ALLvariabile d'ambiente su en_US.UTF-8, ssh'd sul server, POSIXnel mio caso l'output del mio comando locale era impostato su . Questo è lo stesso di quando NON ho impostato (ovvero non impostato) la LC_ALLvariabile prima di ssh'ing.

Quando ho impostato la mia LC_ALLvariabile su en_US.utf8o en_US.utf-8, ssh'd sulla mia casella CentOS 6, l'output della locale era lo stesso di quello impostato sulla casella sorgente.

Notate che non ho usato nessun limite anche per UTF.


11
A proposito, ho notato che ciò si stava verificando dalle impostazioni ssh di Mac OS X Lion. Ho modificato il file / etc / ssh_config e ho commentato SendEnv LANG LC_ *. Ha risolto il mio problema.
Cem,

@Cem Grazie per il suggerimento, questo in effetti lo risolve su Mac OS X Lion.
Zsolt Török,

17

Risolto questo disabilitando "Imposta variabili di ambiente locale all'avvio" in Impostazioni terminale> Avanzate come da questa schermata.

inserisci qui la descrizione dell'immagine

NOTA: se si utilizza iTerm2 è possibile disabilitare l'opzione "Imposta variabili locali automaticamente" in Preferenze> Profili> Terminale


1
Questo ha funzionato per me. In particolare, Terminal.app stava impostando "LC_CTYPE = UTF-8" che quindi ha causato gli errori segnalati dall'OP. In alternativa, unset LC_CTYPEo export LC_CTYPE=en_US.UTF-8risolvi il problema dopo il login.
Tardate

Ciò ha risolto il problema per me, thx
pjvds il

11

Modo semplice:

Inserisci

 LC_CTYPE="en_US.UTF-8"

a /etc/sysconfig/i18n.


Funziona per me, dopo tanti tentativi.
Tommy,

2

Ciò che ha funzionato per me è stato l'aggiunta di un collegamento simbolico nel server CentOS in questo modo:

ln -s /usr/lib/locale/en_US.utf8 /usr/lib/locale/UTF-8

Una volta che lo fai comandi come questo lavoro:

export LC_CTYPE=UTF-8

In caso contrario, quest'ultimo comando non riesce con questo errore:

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

Ora, una soluzione ancora più semplice sta aggiungendo questa linea a / etc / bashrc nel server:

export LC_CTYPE="en_US.utf8"

Grazie per l'input! ha funzionato davvero alla grande. Finalmente in grado di rimuovere quel fastidioso commento ...
cristobal,

2

Ho questo messaggio specifico quando eseguo l'accesso da un Solaris X a un host Centos.

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

Il problema proviene da 2 impostazioni:

  1. Nel mio sistema predefinito ssh_config, chiedo al sistema di passare quelle variabili.

Invia variabili d'ambiente relative alla locale SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES

  1. Sul mio host di origine, queste impostazioni sono state impostate in questo modo:

    SOURCE # LANG = LC_CTYPE = fr_FR.UTF-8 LC_NUMERIC = fr_FR.UTF-8 LC_TIME = fr_FR.UTF-8 LC_COLLATE = fr_FR.UTF-8 LC_MONETARY = fr_FR.UTF-8 LC_MESSAGES = fr.UTF-8 LC_ALL =

Ma, come puoi vedere, LC_MESSAGES è impostato su FRUT-8, che non è un'opzione sul mio host di destinazione.

 DEST#locale -a | grep fr_FR
 fr_FR
 fr_FR@euro
 fr_FR.iso88591
 fr_FR.iso885915@euro
 fr_FR.utf8

Il problema è stato risolto forzando sul mio host di origine, su .bash_profile: # export LC_ALL = fr_FR.UTF-8 export LANG = fr_FR.UTF-8

Avrei potuto risolverlo chiedendo al mio host dest di non prendere questa variabile da qualsiasi connessione ssh (generalmente, o creando un file locale ssh_config per il mio utente)


1

Su un sistema Centos 6.2 locale: questo non ha aiutato:

localedef -i en_US -f UTF-8 en_US.UTF-8

Questo ha funzionato:

localedef --no-archive -i en_US -f UTF-8 en_US.UTF-8

Ho anche cancellato locale-archivein /usr/lib/locale. Non so se questo fosse necessario.


1

Questa era la mia correzione in passato per errori di localizzazione.

Esegui quanto segue: locale-gen

Quindi modifica /etc/locale.gen. Assicurarsi che quanto segue sia senza commenti:

en_US.UTF-8 UTF-8  
en_US ISO-8859-1  

generate locale

locale-gen

1

Con Iterm2 , è diverso.
Vai a Iterm2 -> Preferences, quindi Vai a Profilesscheda e scegli la Terminalscheda dal basso.
Vai alla Environmentcategoria e deseleziona;

Imposta automaticamente le variabili locali

Infine, chiudi e inizia una nuova sessione.

inserisci qui la descrizione dell'immagine


0

e assicurati LC_ALL="en_US.UTF-8" sia o aggiunto a / etc / sysconifg / i18n

contenuto di esempio

LANG="en_GB.UTF-8"
SYSFONT="latarcyrheb-sun16"
LC_ALL="en_US.UTF-8" 

-3

modificare /etc/sysconfig/i18n

Modificare LANG="us" inLANG="en_US"

Salvare ed uscire, disconnettersi e riconnettersi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.