Befehl locale-gen in centos6

17

In meinem Bare-Centos6.5-System, bei dem es sich um einen dockerContainer handelt, en_US.utf-8fehlt das Gebietsschema:

bash-4.1# locale -a
C
POSIX

Normalerweise gibt es in Ubuntu den Befehl locale-gen, dies zu tun:

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

Wie kann ich das in Centos 6.5 machen?

LarryCai
quelle

Antworten:

32

locale-genist nicht vorhanden in Centos/Fedora.

Sie müssen verwenden localedef:

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

Von 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
quelle
Danke, yum whatprovides */localedefBerichte für glibc-commonPaket, während /usr/bin/localedefnicht vorhanden. seltsam, wegen Hafenarbeiter?
Larrycai
@ Larrycai: Ich bin nicht sicher, habe dieses Problem noch nie gesehen. Was für ein Ergebnis ldd /usr/bin/localedef.
2.
Die Datei existiert nicht, nur localeBefehl. Wenn Sie Docker kennen, können Sie auch ausführen docker run -i -t centos bash, um zu überprüfen.
Larrycai
Vielen Dank, Sir ~ Ich war ziemlich verärgert über die merkwürdigen Zeichen :)
Eddie B
8

Ich habe zusätzliche Informationen basierend auf der Antwort @Gnouc angegeben ( localedefwird in Centos verwendet)

Das centos dockerist ein spezielles Image, das minimale Pakete enthält, siehe Skript 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}

Der Befehl inside localedefwird entfernt, das glibc-commonPaket, in dem dies enthalten ist, wird erneut installiert

yum reinstall glibc-common

sicherlich wird die Größe erhöht

LarryCai
quelle
yum reinstall glibc-commonlocaledef wurde auf dem Amazon Linux 2.17-196.172.amzn1Docker-Container hub.docker.com/r/ambakshi/amazon-linux für mich verfügbar gemacht und ich durfte Elixir installieren.
Kevin Johnson