команда locale-gen в centos6

17

В моей голой системе centos6.5, которая является dockerконтейнером, en_US.utf-8локаль отсутствует:

bash-4.1# locale -a
C
POSIX

Обычно в Ubuntu есть команда locale-genдля этого:

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

Как я могу сделать это в Centos 6.5?

larrycai
источник

Ответы:

32

locale-genнет в Centos/Fedora.

Вы должны использовать localedef:

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

От 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
источник
спасибо, yum whatprovides */localedefотчетов за glibc-commonпакет, пока /usr/bin/localedefне существует. странно, из-за докера?
Ларричай
@larrycai: я не уверен, не видел этой проблемы раньше. Какой результат ldd /usr/bin/localedef.
Cuonglm
файл не существует, только localeкоманда. Если вы знаете, докер, вы можете бежать, docker run -i -t centos bashчтобы проверить.
Ларричай
Спасибо, сэр. Меня очень раздражали странные символы :)
Eddie B
8

Я предоставил дополнительную информацию, основанную на ответе @Gnouc ( localedefбудет использоваться в Centos)

Это centos dockerспециальное изображение, которое предоставляет минимальные пакеты, см. Скрипт 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}

Внутренняя команда localedefудалена, glibc-commonпакет, который включает это, должен быть переустановлен

yum reinstall glibc-common

конечно размер будет увеличен

larrycai
источник
yum reinstall glibc-commonсделал localedef доступным для меня в 2.17-196.172.amzn1контейнере Amazon Linux Docker: hub.docker.com/r/ambakshi/amazon-linux и позволил мне установить elixir .
Кевин Джонсон