Rhel

缺少 Oracle Linux(red hat 系列)語言環境

  • March 25, 2022

我正在登錄 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

問題是,所有可用的語言環境在哪裡?以及如何讓他們回來?

我在下面回答了我自己的問題,在這里為其他人發帖。

事實證明,一位熱衷於製作精益系統的開發人員將它們從 /usr/lib/locales/locale-archive 中刪除

一旦 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 標誌中註意到有一個安裝選項可能允許更直接地安裝或修復失去的語言環境,但到目前為止我已經重建了一切。

希望這對將來的其他人有所幫助。

引用自:https://unix.stackexchange.com/questions/696704