comando locale-gen en centos6

17

En mi sistema centos6.5 simple, que es un dockercontenedor, en_US.utf-8falta la configuración regional:

bash-4.1# locale -a
C
POSIX

Normalmente en Ubuntu hay un comando locale-genpara hacer esto:

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

¿Cómo puedo hacer esto en centos 6.5?

larrycai
fuente

Respuestas:

32

locale-genno está presente en Centos/Fedora.

Debes usar 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
fuente
gracias, yum whatprovides */localedefinformes para el glibc-commonpaquete, mientras /usr/bin/localedefque no existe. extraño, a causa de docker?
larrycai
@larrycai: No estoy seguro, no he visto este problema antes. Que resultado ldd /usr/bin/localedef.
Cuonglm
el archivo no existe, solo localecomando. Si conoce Docker, puede correr docker run -i -t centos bashpara verificar también.
larrycai
Gracias señor ~ Me estaba molestando por los caracteres extraños :)
Eddie B
8

Proporcioné información adicional basada en la respuesta @Gnouc ( localedefse utilizará en centos)

La centos dockeres una imagen especial que proporciona paquetes mínimos, consulte el 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}

El comando interno localedefse elimina, el glibc-commonpaquete que incluye esto se reinstalará

yum reinstall glibc-common

seguramente el tamaño se incrementará

larrycai
fuente
yum reinstall glibc-commonme facilitó localedef en el 2.17-196.172.amzn1contenedor Docker de Amazon Linux : hub.docker.com/r/ambakshi/amazon-linux y me permitió instalar el elixir.
Kevin Johnson