如何修复 'character map file `UTF-8' 未找到'

How to fix 'character map file `UTF-8' not found'

我正在设置 UBI rhel8 容器。我需要执行这个命令:

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

失败:

character map file `UTF-8' not found: No such file or directory
cannot read character map directory `/usr/share/i18n/charmaps': No such file or directory

您需要安装这些包

yum -y install glibc-locale-source glibc-langpack-en

然后重新运行 localedef 命令

在 Debian/Ubuntu,我能够通过 apt install locales 解决这个问题。

在 WSL 1 中从 Ubuntu 20.04 升级到 22.04 后,我 运行 出现了同样的症状(locale-gen 找不到 charmap 文件)。问题是有一个WSL 1 中的错误会阻止 运行ning 中的 gunzip。这是 locale-gen 的问题,因为至少在 Ubuntu 22.04 中,/usr/share/i18n/charmaps 中的 charmap 文件以 GZip *.gz 格式存储。显然,locale-gen 依赖于 gunzip 来解压 charmap 文件,当它不能 运行 时,它被卡住了。

解决方案是

  1. 复制 UTF-8.gz 到 Windows 文件系统
  2. 使用Windows工具(例如7-zip)将其解压缩为UTF-8
  3. 将 UTF-8 复制回 /usr/share/i18n/charmaps

然后 locale-gen 工作正常。