lệnh locale-gen trong centos6


17

Trong hệ thống centos6.5 trần của tôi, là một dockercontainer, en_US.utf-8miền địa phương bị thiếu:

bash-4.1# locale -a
C
POSIX

Thông thường trong Ubuntu có lệnh locale-genđể làm điều này:

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

Làm thế nào tôi có thể làm điều này trong centos 6.5?

Câu trả lời:


32

locale-genlà không có mặt trong Centos/Fedora.

Bạn phải sử dụng localedef:

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

Từ 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.

cảm ơn, yum whatprovides */localedefbáo cáo cho glibc-commongói, trong khi /usr/bin/localedefkhông tồn tại. lạ, vì docker?
larrycai

@larrycai: Tôi không chắc chắn, chưa từng thấy vấn đề này trước đây. Kết quả gì ldd /usr/bin/localedef.
cuonglm

Các tập tin không tồn tại, chỉ có localelệnh. Nếu bạn biết docker, bạn cũng có thể chạy docker run -i -t centos bashđể kiểm tra.
larrycai

Cảm ơn ngài ~ Tôi đã trở nên khá khó chịu bởi những ký tự kỳ lạ :)
Eddie B

8

Tôi đã cung cấp thêm thông tin dựa trên câu trả lời @Gnouc ( localedefsẽ được sử dụng theo centos)

Đây centos dockerlà một hình ảnh đặc biệt cung cấp các gói tối thiểu, xem tập lệnh 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}

Lệnh bên trong localedefđược gỡ bỏ, glibc-commongói bao gồm điều này sẽ được cài đặt lại

yum reinstall glibc-common

chắc chắn kích thước sẽ được tăng lên


yum reinstall glibc-commonđã tạo sẵn localedef cho tôi trên Amazon Linux 2.17-196.172.amzn1Docker container: hub.docker.com/r/ambakshi/amazon-linux và cho phép tôi cài đặt elixir.
Kevin Johnson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.