Arch Linux: ロケールを設定できません。システム修理

Arch Linux: ロケールを設定できません。システム修理

昨日、Arch Linuxシステムを更新した後、次のようなエラーが発生し始めました。

Failed to set locale. Fix your system.

この特定のエラーは、スナッパーを実行しようとしたときに発生します。しかし、別の関連エラーは次のとおりです。

bsdcpio: Failed to set default locale

Perlは同様の警告を提供します。これを下に貼り付けます。

これは特定のアプリケーションに限定されず、システム全体の問題のようです。

昨日の更新前は、これらのエラーは発生しませんでした。また、仮想コンソールではエラーは発生しません。 X(KDE)からのみ入手できます。たとえば、 konsole で snapper ls コマンドを実行すると上記のエラーが発生しますが、仮想コンソールで同じ snapper ls コマンドを実行するとエラーは発生しません。

私の他のアーチシステムはほとんど同じで、この問題はありません。

最初のトラブルシューティングの試みは次のとおりです。

  1. /etc/locale.confを確認してください。
  2. 走るlocale-gen
  3. 出力を確認してくださいlocale
  4. Snapperがエラーなしで実行されることを確認する

locale.confにエラーは表示されませんが、それを実行してもlocal-gen問題は解決しません。

関連出力は次のとおりです。

# localectl list-locales
en_US.utf8

# grep -v "^#" /etc/locale.conf
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

# locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_GB.UTF-8
LC_COLLATE=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_MESSAGES=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=

# locale-gen
Generating locales...
en_US.UTF-8... done
Generation complete.

# locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_GB.UTF-8
LC_COLLATE=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_MESSAGES=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=

# locale -a
C
en_US.utf8
POSIX

これはPerlの警告です:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = "",
        LC_ALL = (unset),
        LC_MEASUREMENT = "en_US.UTF-8",
        LC_PAPER = "en_US.UTF-8",
        LC_MONETARY = "en_US.UTF-8",
        LC_NAME = "en_US.UTF-8",
        LC_COLLATE = "en_US.UTF-8",
        LC_CTYPE = "en_US.UTF-8",
        LC_ADDRESS = "en_US.UTF-8",
        LC_NUMERIC = "en_US.UTF-8",
        LC_MESSAGES = "en_US.UTF-8",
        LC_TELEPHONE = "en_US.UTF-8",
        LC_IDENTIFICATION = "en_US.UTF-8",
        LC_TIME = "en_GB.UTF-8",
        LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").

localeKonsole(X) で実行すると次の行が表示されますが、いいえlocale仮想コンソールで実行する場合:

locale: Cannot set LC_ALL to default locale: No such file or directory

エラーなしで仮想コンソールでsnapper lsコマンドを実行できます。

私が知っている限り、Archにはファイルがありません/etc/default/locale。私のArchシステムにはファイルがありません。

システムを再起動しても役に立ちませんでした。

答え1

ロケールの1つ(例LC_TIME:)がまだ作成されていないロケール(例en_GB.UTF-8:)に設定されています。ロケールを有効にし/etc/locale.genてロケールを再生成すると、エラーは消えます。

この設定はの設定とは異なるため、/etc/locale.conf起動スクリプトの1つにオーバーライドを配置した可能性があります。仮想コンソールではエラーが発生し.xinitrcないため.xprofile。ただし、デスクトップ全体を使用する場合は、通常、ローカル設定を含む独自の設定があります。

答え2

KDE(KDE5)を使用している場合は、適用範囲が発生する可能性がある他の場所:

./.config/plasma-locale-settings.sh
./.config/plasma-localerc

これはKDEシステム設定で構成できます。

デフォルトでは、出力がlocaleで構成されているものと異なる場合は、/etc/locale.confいくつかのオーバーライドがあることを意味します。 Foxが以前に答えたように、不足して/etc/locale.genいるロケールを有効にしてから再作成するか、/etc/locale.conf別のロケール設定を使用する必要があります/etc/locale.gen

これはbsdtarなどの問題も解決します。 bsdtar: Failed to set default locale

関連情報