web-dev-qa-db-ja.com

centos6のlocale-genコマンド

dockerコンテナーである私の裸のcentos6.5システムでは、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でこれを行うにはどうすればよいですか?

17
larrycai

locale-genCentos/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.
32
cuonglm

回答@Gnoucに基づいて追加情報を提供しました(localedefはセントオで使用されます)

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

きっとサイズが増えます

8
larrycai