缺少 Oracle Linux(红帽系列)区域设置

缺少 Oracle Linux(红帽系列)区域设置

我正在登录 dev oracle linux 7 系统,并在登录时注意到这些警告:

Last login: Thu Mar 24 15:23:29 2022 from x.x.x.x
-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf-8)
-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf-8)
/bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.utf-8)

所以我检查系统上的所有区域设置并看到这一点;我只有最基本的系统区域设置。

$localectl list-locales
C.utf8

$ 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
C.utf8
POSIX

问题是,所有可用的区域设置在哪里?我怎样才能把它们找回来?

我在下面回答了我自己的问题,在这里发布给其他人。

答案1

事实证明,一位热衷于打造精益系统的开发人员将它们从 /usr/lib/locales/locale-archive 中删除了

一旦语言环境存档的语言环境被删除,恢复它们的一个好方法是从源包中检索并重建存档(我使用 yum 提供的 /usr/lib/locales/C.utf8 来找出我需要哪个包, glibc-common),我像这样重建了档案:

cd /tmp/tempdir
yumdownloader glibc-common
rpm2cpio glibc-common-2.17-325.0.1.el7_9.x86_64.rpm | cpio -idmv
cp /tmp/tempdir/usr/lib/locale/locale-archive.tmpl usr/lib/locale/locale-archive.tmpl
build-locale-archive

从模板文件的源包版本重建存档后,我可以再次看到所有语言环境,并且警告现在消失了,因为可以再次引用语言环境。这可能有点像大锤方法,我从 build-locale-archive 的 --help 标志中注意到有一个安装选项,可能允许更直接地安装或修复丢失的语言环境,但此时我已经重建了一切。

希望这对将来的其他人有帮助。

相关内容