Komenda locale-gen w centos6

17

W moim nagim systemie centos6.5, który jest dockerkontenerem, en_US.utf-8brakuje ustawień regionalnych:

bash-4.1# locale -a
C
POSIX

Zwykle w Ubuntu jest polecenie, locale-genaby to zrobić:

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

Jak mogę to zrobić w centos 6.5?

Larrycai
źródło

Odpowiedzi:

32

locale-gennie jest obecny w Centos/Fedora.

Musisz użyć localedef:

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

Od 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
źródło
dziękuję, yum whatprovides */localedefraporty za glibc-commonpakiet, podczas gdy /usr/bin/localedefnie istnieje. dziwne z powodu dokera?
larrycai
@larrycai: Nie jestem pewien, nie widziałem wcześniej tego problemu. Jaki wynik ldd /usr/bin/localedef.
cuonglm
plik nie istnieje, tylko localepolecenie. Jeśli znasz dokera, możesz także uruchomić, docker run -i -t centos bashaby sprawdzić.
larrycai
Dzięki, proszę pana ~ Denerwowały mnie dziwne znaki :)
Eddie B
8

Podałem dodatkowe informacje na podstawie odpowiedzi @Gnouc ( localedefnależy stosować w centach)

centos dockerJest specjalny obraz, który zapewnia minimalne pakietów, patrz scenariusz 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}

Komenda wewnętrzna localedefzostała usunięta, glibc-commonpakiet, który to zawiera, zostanie ponownie zainstalowany

yum reinstall glibc-common

na pewno rozmiar zostanie zwiększony

Larrycai
źródło
yum reinstall glibc-commonudostępnił mi localedef na 2.17-196.172.amzn1kontenerze Amazon Linux Docker: hub.docker.com/r/ambakshi/amazon-linux i pozwolił mi zainstalować eliksir.
Kevin Johnson