어제 Arch Linux 시스템을 업데이트한 후 다음과 유사한 오류가 발생하기 시작했습니다.
Failed to set locale. Fix your system.
이 특정 오류는 snapper를 실행하려고 할 때 발생합니다. 그러나 또 다른 관련 오류는 다음과 같습니다.
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
로케일 중 하나(예: LC_TIME
)가 아직 생성되지 않은 로케일(예: en_GB.UTF-8
)로 설정되어 있습니다. 로케일을 활성화 /etc/locale.gen
하고 로케일을 다시 생성하면 오류가 사라집니다.
이 설정은 의 설정과 다르기 때문에 /etc/locale.conf
시작 스크립트 중 하나에 재정의를 배치했을 수 있습니다. 가상 콘솔에서는 오류가 발생하지 .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