Come correggere le impostazioni locali in Debian Squeeze


17

Occasionalmente ricevo errori di localizzazione e ho provato a eseguire dpkg-reconfigure locales per risolvere il problema. Ecco l'output:

:~$ sudo dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_CTYPE = "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_ALL to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_CTYPE to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_ALL to default locale: No such file or directory
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LANG = "C"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LANG = "C"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

Ho cercato / usr / bin / locale ma non esiste sul mio sistema. Devo crearlo? Cosa ci metto dentro?

Inoltre ho trovato una domanda correlata che dice che la causa del suo problema era nel file sshd_config. Il file aveva la seguente voce:

AcceptEnv LANG LC_*

Sono principalmente preoccupato che possa causare problemi al mio VPS, altrimenti se non c'è nulla di grave sarò felice di ignorare il problema. Cosa dovrei fare? Grazie!


Lo stesso problema (LC_CTYPE = UTF-8, che è errato) può verificarsi quando si accede tramite ssh da un Mac a un box Linux e il terminale imposta automaticamente le variabili di ambiente. C'è una casella per quello. Deselezionalo e sei a posto. In iTerm è nel profilo-> Scheda Terminale.
raarts

Sembra che ci sia un bug con una certa distribuzione basata su Debian (incluso Ubuntu). L'uso di fr_FR.UTF-8 stava dando problemi (e la localizzazione esisteva). Fare un locale-gen frsarebbe costruire tutte le lingue locali (fr_BE, fr_CH ecc ...) risolve il problema. Forse provacilocale-gen en
Antony Gibbs,

Risposte:


10

primo:

sudo apt-get purge locales

poi:

sudo aptitude install locales

e il famoso:

sudo dpkg-reconfigure locales

Questo elimina il sistema delle versioni locali, quindi reinstalla le versioni locali e esegue il downgrade di libc6 da 2.19 a 2.13, che è il problema. Quindi configura nuovamente le impostazioni locali.


Ho esattamente lo stesso problema. Quindi, con questa risposta e includendo i repository jessie, ho potuto installare localessenza downgrade libc6.
shgnInc,

questo non ha aiutato
aexl

8

Se questo accade quando SSHing nella tua casella, ma non sulla console, prova a riconfigurare il tuo client ssh (sul tuo computer locale). Su Mac OS X, ad esempio, modifica / private / etc / ssh_config e commenta

# SendEnv LANG LC_*

Grazie al posto di bredman nella Bacheca dei Rasberry Pi .


Questo file ora: / private / etc / ssh / ssh_config
b4d

7

Ho avuto questo problema per molto tempo e tutti i soliti consigli su dpkg-riconfigurare locales, locale-gen, ecc. Non mi sono stati d'aiuto. Quindi ho giocato un po 'con le variabili d'ambiente, e quello che ho scoperto è che il sistema stava borking sulla LC_CTYPEvariabile d'ambiente! UTF-8non è un valore valido per questo. Impostandolo per en_US.UTF-8risolverlo.

Per rendere permanente la modifica, ho corso

update-locale LC_CTYPE=en_US.UTF-8

che scrive a /etc/default/locale. E quindi riavviare il sistema affinché abbia l'effetto completo.


Sfortunatamente, questo produceperl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_CTYPE = "UTF-8", LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). *** update-locale: Error: invalid locale settings: LC_CTYPE=en_US.UTF-8
aexl

2

L'ho già visto in precedenti installazioni Debian e, sebbene fastidioso, non l'ho mai visto causare un problema.

Se

  /usr/bin/locale 

manca, prova (come root):

  apt-get install libc-bin

che dovrebbe installare libc-bin, fornendo / usr / bin / locale.

Quella linea AcceptEnv nel tuo sshd_config è piuttosto standard e non dovrebbe essere la causa del tuo problema qui.


libc-bin era già installato, quindi l'ho aggiornato e ho provato a eseguirlo di dpkg-reconfigure localesnuovo. Nessuna gioia :(
blogjunkie il

/ Usr / bin / locale esiste ora? In tal caso, qual è l'output di: locale -ae cosa c'è dentro /etc/default/locale?
Chad Feller,

Il contenuto di `/ etc / default / locale ': # File generato da update-locale LANG = en_US.UTF-8
blogjunkie

locale -ami dà: locale: Impossibile impostare LC_CTYPE sulla locale predefinita: nessun file o directory C C__US.utf8 POSIX
blogjunkie

apt sosteneva che era installato libc-bin, ma mancava almeno un file (/ usr / bin / locale) e la reinstallazione di libc-bin sembra averlo risolto. Puoi provare apt-get install --reinstall locales? Quindi, per una buona misura, prova locale-gen, che rigenera qualsiasi locale non commentato /etc/locale.gen(dovresti avere una linea simile en_US.UTF-8 UTF-8). Dopo questo, vedi se locale -afunziona.
Chad Feller,

2

Ha fatto quanto segue, come Manoj, ma lo ha aggiunto a # ~ / .bashrc:

export LC_ALL=en_US.utf8
export LANGUAGE=en_US.utf8

1

Se stai ricevendo gli errori mentre stai usando un sistema remoto e non vuoi modificare il sistema remoto (cambiando sshd_config, per esempio), puoi fare quanto segue sul tuo sistema locale (supponendo bash)

export LC_ALL=en_US
export LANGUAGE=en_US

e poi ssh user@remote


1

Nella mia nuova installazione Debian (minima) le localizzazioni erano completamente mancanti. L'installazione ( aptitude install locales) e l'esecuzione ha locale-genfatto il trucco però. Quindi ragazzi, fate come ha detto Chad Feller, ma verificate prima che il pacchetto sia localesinstallato.


0

Se hai disabilitato l'autenticazione PAM per ssh in /etc/ssh/sshd_config( UsePAM no) la configurazione responsabile in /etc/pam.d/loginnon è efficace:

session required pam_env.so readenv=1 envfile=/etc/default/locale

Il risultato: /etc/default/localesembra non avere alcun effetto.

Quindi devi configurare il tuo client per inviare le variabili LANG o esportare le variabili env negli script del profilo come ~/.profile, ~/bashrcecc.

Altro: http://wiki.debian.org/Locale#Standard


0

Stavo usando VPS tedesco e non potevo cambiare le impostazioni locali perché non era installato alcun pacchetto in lingua inglese.

Dopo l'installazione ho potuto finalmente cambiare le impostazioni internazionali

aptitude install language-pack-en

0

sui sistemi Debian questo risolverà il tuo problema:

apt-get install locales-all

sui sistemi Ubuntu installare un language pack specifico, ad esempio:

apt-get install language-pack-en

locale-gen en_US.UTF-8


0

Mac collegato a una nuova installazione di Debian 10. Nessuna delle risposte su Google su Stack Exchange è stata di aiuto. Ecco cosa ha fatto (ed è stato anche semplice e affidabile):

sed -i "s/^AcceptEnv/#AcceptEnv/g" /etc/ssh/sshd_config

Esegui questo sulla tua casella Debian e questo impedirà al terminale mac di connessione di confondere le localizzazioni del server ( maggiori informazioni ).

Come bonus, ciò potrebbe persino migliorare la sicurezza del server.

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.