web-dev-qa-db-ja.com

CentOS 7(Docker上)に言語サポートを追加するにはどうすればよいですか?

ロケールを日本語に設定しようとしていますが、DockerのCentOSイメージに言語サポートが含まれていません。

bash-4.2# yum groupinstall -y "Japanese Support"
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.btte.net
 * extras: centos.mirror.secureax.com
 * updates: centos.mirror.secureax.com
Warning: group Japanese Support does not exist.
Maybe run: yum groups mark install (see man yum)
No packages in any requested group available to install or update

yum grouplistyum grouplist hiddenでグループリストを確認しましたが、どちらにも日本語のサポートは含まれていません。
日本語サポートをインストールする方法はありますか?
前もって感謝します。

10
DIGITALSQUAD

RHEL 7.4 Dockerイメージでも同じ問題が発生しました。 yum reinstall glibc-commonだけでは問題は解決しませんでした。英語のみのインストールでした。

Dockerコンテナ/etc/yum.confoverride_install_langs=en_USという行が含まれていることがわかりました。これにより、yum reinstall glibc-commonは英語のみをインストールしました。

この行をコメント化して(またはデフォルト値のallに変更して)、_yum reinstall glibc-commonを再実行すると、他の言語を使用できました

Docker run/attach後の初期環境

# locale -a
C
POSIX
en_US.utf8
# grep lang /etc/yum.conf
override_install_langs=en_US
# export LANG=fr_FR
# ls foo
ls: cannot access foo: No such file or directory

変更する前にglib-commonを再インストールする試み/etc/yum.conf

# yum -y -q reinstall glibc-common
Failed to set locale, defaulting to C
# ls foo
ls: cannot access foo: No such file or directory
# locale -a
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_COLLATE to default locale: No such file or directory
C
POSIX
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8
#

/etc/yum.confを変更して、行をコメント化した後override_install_langs=en_US

# vi /etc/yum.conf
# grep lang /etc/yum.conf
#override_install_langs=en_US
# yum -y -q reinstall glibc-common
Failed to set locale, defaulting to C
# ls foo
ls: cannot access foo: Aucun fichier ou dossier de ce type
# locale -a | wc -l
789
11

ロケールを設定 は、localectlコマンドで実行できます。

# localectl list-locales | grep ^ja
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc

正しいロケールを選択して設定します。

# localectl set-locale LANG=ja_JP.utf8

これはインプットメソッドや キーボードレイアウトの変更 をインストールしませんが、それらは実際にはコンテナには適用されないことに注意してください。

1
Michael Hampton

glibc-commonパッケージを再インストールする必要があります。 これが証明です:

docker run -it --rm centos bash -c 'locale -a | wc -l && yum -y -q reinstall glibc-common && locale -a | wc -l'
53
789

注:locale -aはインストールされたロケールをリストし、wc -lはそれらをカウントするため、これらの数値はglibc-commonを再インストールする前後のロケールの数です。

1
Yajo

CentOSイメージには言語パックがインストールされていないため、同様の問題がありました。 glibc-langpack-enパッケージをインストールしてenをサポートしました。だから、あなたはglibc-langpack-jaが必要だと思います。

yum install glibc-langpack-ja
0