commande locale-gen dans centos6

17

Dans mon système centos6.5 nu, qui est un dockerconteneur, les en_US.utf-8paramètres régionaux sont manquants:

bash-4.1# locale -a
C
POSIX

Normalement, dans Ubuntu, il y a une commande locale-genpour faire ceci:

# locale-gen en_US.UTF-8
# echo 'LANG="en_US.UTF-8"' > /etc/default/locale

Comment puis-je faire cela dans centos 6.5?

larrycai
la source

Réponses:

32

locale-genn'est pas présent dans Centos/Fedora.

Vous devez utiliser localedef:

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

De man localedef:

NAME
       localedef - define locale environment

SYNOPSIS
       localedef [-c][-f charmap][-i sourcefile][-u code_set_name] name

DESCRIPTION
       The localedef utility shall convert source definitions for locale cate‐
       gories into a format usable by the functions and utilities whose opera‐
       tional behavior is determined by the setting of the locale  environment
       variables    defined    in    the    Base    Definitions    volume   of
       IEEE Std 1003.1-2001, Chapter 7, Locale. It  is  implementation-defined
       whether users have the capability to create new locales, in addition to
       those  supplied  by  the  implementation.  If  the  symbolic   constant
       POSIX2_LOCALEDEF  is  defined,  the system supports the creation of new
       locales.    On   XSI-conformant   systems,   the   symbolic    constant
       POSIX2_LOCALEDEF shall be defined.
cuonglm
la source
merci, yum whatprovides */localedefrapports pour le glibc-commonpackage, alors qu'il /usr/bin/localedefn'existe pas. étrange, à cause de docker?
larrycai
@larrycai: Je ne suis pas sûr, je n'ai jamais vu ce problème auparavant. Quel résultat ldd /usr/bin/localedef.
cuonglm
le fichier n'existe pas, seule localecommande. Si vous connaissez docker, vous pouvez également exécuter docker run -i -t centos bashpour vérifier.
larrycai
Merci monsieur ~ J'étais très ennuyé par les caractères bizarres :)
Eddie B
8

J'ai fourni des informations supplémentaires basées sur la réponse @Gnouc ( localedefdoit être utilisée dans les centos)

Il centos dockers'agit d'une image spéciale qui fournit un minimum de packages, voir le script https://github.com/dotcloud/docker/blob/master/contrib/mkimage-yum.sh

rm -rf "$target"/usr/{{lib,share}/locale,{lib,lib64}/gconv,bin/localedef,sbin/build-locale-archive}

La commande Inside localedefest supprimée, le glibc-commonpackage qui inclut ceci doit être réinstallé

yum reinstall glibc-common

sûrement la taille sera augmentée

larrycai
la source
yum reinstall glibc-commonrendu localedef disponible pour moi sur le 2.17-196.172.amzn1conteneur Amazon Linux Docker: hub.docker.com/r/ambakshi/amazon-linux et m'a permis d'installer l'élixir.
Kevin Johnson