私は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フラグには、より簡単なインストールまたは欠落したロケールの回復を可能にするインストールオプションがあることがわかりましたが、この時点で再構築しました。すべて。
これが今後他の人に役立つことを願っています。