Arch Linux: 로케일을 설정할 수 없습니다. 시스템 수리

Arch Linux: 로케일을 설정할 수 없습니다. 시스템 수리

어제 Arch Linux 시스템을 업데이트한 후 다음과 유사한 오류가 발생하기 시작했습니다.

Failed to set locale. Fix your system.

이 특정 오류는 snapper를 실행하려고 할 때 발생합니다. 그러나 또 다른 관련 오류는 다음과 같습니다.

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

로케일 중 하나(예: 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

관련 정보