Διόρθωση ή ρύθμιση locales σε Debian και Ubuntu

dimitris | Τρί, 09/11/2018 - 17:52 | 5'

Σε ορισμένες εγκαταστάσεις Debian server, εμφανίζεται το παρακάτω μήνυμα σφάλματος όταν εγκαθιστούμε εφαρμογές με χρήση της Perl (για παράδειγμα με τη χρήση του apt-get):

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

Το πρόβλημα οφείλεται σε κακή ρύθμιση του locale. Για να δείτε τις τρέχουσες ρυθμίσεις, δίνετε την εντολή locale, όπου - αν είναι σωστή η ρύθμιση- θα πρέπει να δείτε κάτι σαν κι αυτό:

# locale
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.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=en_US.UTF-8

Αν δείτε πολλά unset ή ανάμεικτα locale, τότε αυτό σημαίνει ότι δεν έχουν ρυθμιστεί σωστά τα locales στο σύστημά σας.

Κατ'αρχάς, με την εντολή locale-a βλέπετε ποια είναι τα διαθέσιμα locales στο σύστημα, δηλαδή ποια είναι ήδη έτοιμα για χρήση:

# locale -a
C
C.UTF-8
en_US.utf8
POSIX

Στη συνέχεια, μπορείτε να ορίσετε το σωστό locale με τις παρακάτω εντολές (εδώ θεωρούμε ότι θέλετε να βάλετε en_US.UTF-8 στον server σας):

export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
dpkg-reconfigure locales

Αναλυτικότερα, με τις 3 πρώτες εντολές ορίζουμε στις μεταβλητές συστήματος για τη γλώσσα, να χρησιμοποιεί το en_US.UTF-8 (βάλτε el_GR-UTF-8 αν προτιμάτε default γλώσσα τα ελληνικά - δεν το συνιστώ σε server).

Στη συνέχεια με την εντολή locale-gen δημιουργούμε το locale en_US.UTF-8.

Με την τελευταία εντολή, στο Debian, κάνουμε ξανά ρύθμιση του πακέτου locales. Με την τελευταία εντολή, σε Debian/Ubuntu θα εμφανιστεί ένα ncurses περιβάλλον όπου επιλέγουμε (με το πλήκτρο space) ποια locales θέλουμε να δημιουργηθούν. Για παράδειγμα, επιλέγουμε πάλι το en_US.UTF-8 και τέλος πατάμε OK.

Δημιουργία locales στο Debian
Δημιουργία locales στο Debian

Στην επόμενη οθόνη διαλέγουμε το εξορισμού locale για όλο το σύστημα. Στην πράξη δηλαδή επιλέγουμε την γλώσσα με την οποία θα μιλά ο server και όλα τα προγράμματα που τρέχουμε εκεί:

debian locale Perl warning Setting locale failed in Debian
Επιλογή default γλώσσας στο Debian

Μετά από αυτό, μπορείτε να επιβεβαιώσετε τη ρύθμιση με μια ματιά στο αρχείο /etc/default/locale που πρέπει να γράφει κάτι σαν κι αυτό:

cat /etc/default/locale
#  File generated by update-locale
LANG=en_US.UTF-8

Αυτό το αρχείο /etc/default/locale μπορούμε είτε να το επεξεργαστούμε με το χέρι είτε να το πειράξουμε με την εντολή update-locale. Για παράδειγμα, για να βάλουμε γλώσσα τα ελληνικά

update-locale LANG=el_GR.UTF-8

Παράλληλη χρήση πολλαπλών locales

Το αρχείο /etc/default/locale είναι χρήσιμο όταν π.χ. θέλουμε γλώσσα συστήματος τα ελληνικά αλλά τα μηνύματα του συστήματος στα αγγλικά ή άλλη γλώσσα. Αυτό το κάνουμε π.χ. ορίζοντας:

LANG=el_GR.UTF-8
LC_MESSAGES=POSIX

Η μεταβλητή συστήματος LC_MESSAGES είναι υπεύθυνη για τη γλώσσα στην οποία εμφανίζονται τα μηνύματα του συστήματος και του διαχειριστή παραθύρων.. Σημείωση: Μπορείτε να δείτε όλες τις διαθέσιμες LC_* μεταβλητές για Ubuntu/Debian εδώ.

Troubleshooting

Σε κάποιες περιπτώσεις, ίσως χρειαστεί να προσθέσουμε τις μεταβλητές locale στο /etc/environment για μόνιμη αποθήκευση:

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

Αυτό ήταν! :)
 

Φόρουμ
Δώσε αστέρια!

MO: 5 (ψήφοι: 3)