web-dev-qa-db-ja.com

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コマンドを実行してもエラーは発生しません。

ほぼ同じである他のArchシステムには、この問題はありません。

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

  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").

Konsole(X)内でlocaleを実行すると次の行が表示されますが、仮想コンソールでlocaleを実行するとnotになります。

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

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

私の知る限り、Archには/etc/default/locale。そのファイルはどのArchマシンにも存在しません。

システムを再起動しても解決しませんでした。

1
MountainX

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

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

4
Fox