昨日、Arch Linuxシステムを更新した後、次のようなエラーが発生し始めました。
Failed to set locale. Fix your system.
この特定のエラーは、スナッパーを実行しようとしたときに発生します。しかし、別の関連エラーは次のとおりです。
bsdcpio: Failed to set default locale
Perlは同様の警告を提供します。これを下に貼り付けます。
これは特定のアプリケーションに限定されず、システム全体の問題のようです。
昨日の更新前は、これらのエラーは発生しませんでした。また、仮想コンソールではエラーは発生しません。 X(KDE)からのみ入手できます。たとえば、 konsole で snapper ls コマンドを実行すると上記のエラーが発生しますが、仮想コンソールで同じ snapper ls コマンドを実行するとエラーは発生しません。
私の他のアーチシステムはほとんど同じで、この問題はありません。
最初のトラブルシューティングの試みは次のとおりです。
- /etc/locale.confを確認してください。
- 走る
locale-gen
- 出力を確認してください
locale
- 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").
locale
Konsole(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