在不使用localectl的情况下更改CentOS / RHEL内的系统区域设置?

问题描述 投票:1回答:1

我正在尝试基于oracle/database:11.2.0.2-xe(基于RHEL的Oracle Linux)构建Docker镜像,并希望更改此图像中的系统区域设置(使用RUN中的一些Dockerfile命令)。

根据this guide我应该使用localectl set-locale <MYLOCALE>但这个命令失败了Failed to create bus connection: No such file or directory消息。对于需要启动SystemD的命令,这是一个known Docker issue

我试图启动SystemD无论如何(使用/usr/sbin/init作为第一个过程以及使用-v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /run感谢this help)但随后localectl set-locale失败了Could not get properties: Connection timed out消息。

所以我现在试图避免使用localectl来改变我的系统全局语言环境,我怎么能这样做?

docker locale systemd rhel
1个回答
0
投票

根据this good guide关于在Linux上设置语言环境的说法,我应该使用

localedef -c -i fr_FR -f ISO-8859-15 fr_FR.ISO-8859-15

但是这个命令失败了

cannot read character map directory `/usr/share/i18n/charmaps': No such file or directory`

这个SO reply表示可以使用yum reinstall glibc-common -y来解决这个问题并且有效。

所以我最后的工作Dockerfile是:

RUN yum reinstall glibc-common -y && \
  localedef -c -i fr_FR -f ISO-8859-15 fr_FR.ISO-8859-15 && \
  echo "LANG=fr_FR.ISO-8859-15" > /etc/locale.conf

ENV LANG fr_FR.ISO-8859-15
© www.soinside.com 2019 - 2024. All rights reserved.