comando locale-gen no centos6

17

No meu sistema centos6.5, que é um dockercontêiner, o código de en_US.utf-8idioma está ausente:

bash-4.1# locale -a
C
POSIX

Normalmente no Ubuntu existe um comando locale-genpara fazer isso:

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

Como posso fazer isso no centos 6.5?

larrycai
fonte

Respostas:

32

locale-gennão está presente em Centos/Fedora.

Você deve 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
fonte
obrigado, yum whatprovides */localedefrelatórios por glibc-commonpacote, enquanto /usr/bin/localedefnão existir. estranho, por causa do estivador?
larrycai
@larrycai: Não tenho certeza, não vi esse problema antes. Que resultado ldd /usr/bin/localedef.
18714 cu Cullm
o arquivo não existe, apenas localecomando. Se você conhece o docker, também pode executar docker run -i -t centos basha verificação.
larrycai
Graças sir ~ Eu estava ficando muito irritado com os caracteres estranhos :)
Eddie B
8

Forneci informações extras com base na resposta @Gnouc ( localedefdeve ser usada em centos)

A centos dockeré uma imagem especial que oferece pacotes mínimos, ver roteiro 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}

O comando interno localedefé removido, o glibc-commonpacote que inclui este deve ser reinstalado

yum reinstall glibc-common

certamente o tamanho será aumentado

larrycai
fonte
yum reinstall glibc-commondisponibilizei localedef para mim no 2.17-196.172.amzn1contêiner do Amazon Linux Docker: hub.docker.com/r/ambakshi/amazon-linux e me permitiu instalar o elixir.
Kevin Johnson