perintah locale-gen dalam centos6

17

Dalam sistem telanjang centos6.5 saya, yang merupakan dockerwadah, en_US.utf-8lokal tidak ada:

bash-4.1# locale -a
C
POSIX

Biasanya di Ubuntu ada perintah locale-genuntuk melakukan ini:

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

Bagaimana saya bisa melakukan ini dalam centos 6.5?

larrycai
sumber

Jawaban:

32

locale-gentidak ada di Centos/Fedora.

Anda harus menggunakan localedef:

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

Dari 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
sumber
terima kasih, yum whatprovides */localedeflaporan untuk glibc-commonpaket, sementara /usr/bin/localedeftidak ada. aneh, karena buruh pelabuhan?
larrycai
@larrycai: Saya tidak yakin, belum pernah melihat masalah ini sebelumnya. Apa hasil ldd /usr/bin/localedef.
cuonglm
file tidak ada, hanya localeperintah. Jika Anda tahu buruh pelabuhan, Anda dapat menjalankan docker run -i -t centos bashuntuk memeriksa juga.
larrycai
Terima kasih, Sir ~ Saya agak terganggu dengan karakter aneh :)
Eddie B
8

Saya memberikan informasi tambahan berdasarkan jawaban @Gnouc ( localedefakan digunakan dalam centos)

Ini centos dockeradalah gambar khusus yang menyediakan paket minimal, lihat skrip 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}

Perintah di dalam localedefdihapus, glibc-commonpaket yang termasuk ini harus diinstal ulang

yum reinstall glibc-common

pasti ukurannya akan bertambah

larrycai
sumber
yum reinstall glibc-commonmembuat localedef tersedia untuk saya di 2.17-196.172.amzn1wadah Amazon Linux Docker: hub.docker.com/r/ambakshi/amazon-linux dan memungkinkan saya menginstal elixir.
Kevin Johnson