로케일 문제를 어떻게 해결합니까?


506

서비스 시작 또는 중지와 같은 작업을 수행 할 때마다이 메시지가 나타납니다.

perl: warning: Setting locale failed.   
perl: warning: Please check that your locale settings:   
        LANGUAGE = "en_US:en",   
        LC_ALL = (unset),   
        LC_MESSAGES = "en_US.UTF-8",   
        LANG = "en_US.UTF-8"   
    are supported and installed on your system.   
perl: warning: Falling back to the standard locale ("C").   
locale: Cannot set LC_CTYPE to default locale: No such file or directory   
locale: Cannot set LC_MESSAGES to default locale: No such file or directory   
locale: Cannot set LC_ALL to default locale: No such file or directory   
(Reading database ... 21173 files and directories currently installed.)  
Removing bind9 ...  
 * Stopping domain name service... bind9                                        [ OK ]
Processing triggers for man-db ...   
locale: Cannot set LC_CTYPE to default locale: No such file or directory   
locale: Cannot set LC_MESSAGES to default locale: No such file or directory   
locale: Cannot set LC_ALL to default locale: No such file or directory   

이 오류를 어떻게 해결합니까?




모든 사용자를위한 쉽고 영구적 인 수정 : askubuntu.com/questions/881742/…
Galvani

답변:


513

먼저 locale현재 사용자 계정에 대해 현재 정의 된 로케일을 나열하기 위해 실행 하십시오.

$ locale
LANG=C
LANGUAGE=
LC_CTYPE=fi_FI.UTF-8
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE=fi_FI.UTF-8
LC_MONETARY="C"
LC_MESSAGES=fi_FI.UTF-8
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=

그런 다음 누락 된 로케일을 생성하고 로케일을 재구성하여 주목하십시오.

$ sudo locale-gen "en_US.UTF-8"
Generating locales...
  en_US.UTF-8... done
Generation complete.

$ sudo dpkg-reconfigure locales
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.

이제 더 이상 오류가 표시되지 않습니다!


220
나를 위해 작동하지 않았다
Umair

4
이것은 많은 시스템에서 저에게 효과적이었습니다. 새로 설치된 시스템에서이 문제를 피할 수있는 방법이 있습니까?
Brylie Christopher Oxley

13
@UmairAyub에 알 수없는 로케일이 둘 이상있을 수 있습니다. 다음을 시도해보십시오 : y in $ (locale | cut -d '='-f 2 | sort | uniq); do locale-gen $ y; done 그것은 당신이 가진 각각의 정의에 대한 로케일을 생성 할 것입니다
Ivan Buttinoni

3
로그 아웃하고 로그인 도움이 될 수 있습니다
SMMousavi

4
@Umair이 문제에는 인적 오류의 위험이 높습니다. 시스템은 en_GB기본적으로 구성되어 있지만으로 설정되어 en_US있습니다. 수동으로 언급해야 en_GB하고 주석 en_US에서 /etc/locale.gen. 하드웨어 Raspberry Pi 3b 및 시스템 Raspbian Jessie에서 내 답변 askubuntu.com/a/790373/25388 을 참조하십시오 .
Léo Léopold Hertz 준영

366

위의 제안에서 아무것도 작동하지 않았습니다 (Ubuntu Server 12.04LTS). 마지막으로 도움이 된 것은 파일에 넣는 것입니다 /etc/environment.

LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8

어떤 이유로 그것은 누락되었습니다. 로케일 및 기타 명령의 출력은 변수가 올바르게 정의 된 것처럼 나타납니다. 다시 말해, 모든 기본 사항이 선언되어야하는 곳에서 선언되는 것은 당연한 일이 아닙니다.


115
예, 아마도 업데이트 된 버전으로 인해이 작업을 제외하고는 효과가 없었습니다. 그러나 나는 이것을 이것을 넣는 것을 선호한다 /etc/default/locale.
Naveed

27
업데이트하지 /etc/default/locale더 이상 경고. 감사합니다
ohho

7
그렇습니다. 다른 사람들은 나를 위해 일하지 않았습니다. 이건 여기에 무인 업데이트에 사용한 하나의 라이너가 있습니다. sudo sh -c "echo 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"
dman

12
@ user163207 솔루션이 덮어 쓰지 않고 추가되므로 권장 파일이 아니며 echo백 슬래시 이스케이프 해석을 사용하여 실행해야 하므로 솔루션이 올바르지 않습니다 . 이것은 귀하와 동일하지만 위에서 언급 한 고정 사항을 사용합니다.sh -c "echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale"
glarrain

13
LOGPUT을 잊지 말고 다시 로그인하십시오!
SMMousavi

149

발행 후 사라져야합니다.

sudo locale-gen en_US en_US.UTF-8
sudo dpkg-reconfigure locales 

dpkg-reconfigure패키지가 이미 설치된 후 재구성합니다. 다시 구성 할 패키지 이름을 전달하십시오. 패키지를 처음 설치할 때와 매우 유사하게 구성 질문을합니다.


9
나는 1 년 전 내 문제가 당신 이이 문제를 해결하는 데 도움이되어 기쁘다.)
Rinzwind

1
이 로케일은 기본적으로 생성되어서는 안됩니까? 내 말은 en, en_AU, en_CA, en_GB기본적으로 존재하지만 en_US?
다니엘

@Rinzwind 노력해 주셔서 감사합니다! 내가 사과 할께; 나는 내 질문을 더 잘 말해야했다. 내가 물어봐야 할 것은 새 로케일을 생성 한 후 로케일 패키지를 재구성해야하는 이유는 무엇입니까? 로케일 없이도 작동하는 것처럼 보입니다 dpkg-reconfigure.
빅터

Docker 컨테이너에서 Ubuntu 14.04를 사용하므로 아무것도 설정되지 않았습니다. 장고 makemessage는 이것을 필요로한다. 이것은 완벽하게 작동했습니다! 감사.
저스틴

1
라즈 비안이 여기에서 범위를 벗어 났음을 알지만, 로그 아웃하고 로그인해야 LC_ALL제대로 설정 되었다고 언급했습니다 .
MatrixManAtYrService

119

.bashrc파일에 다음을 추가 하십시오 (bash를 사용한다고 가정)

export LC_ALL="en_US.UTF-8"

2
이 스위트 픽스는 Amazon-EC2 이미지에서 나에게 도움이되었습니다 (기본 RHEL AMI를 실행하고있었습니다) 정말 감사합니다! :)
기드온

이것은 내 디지털 오션의 Ubuntu 12.04 이미지와 함께 나를 위해 일했습니다.
Inan

2
이것은 내 문제를 해결했다. 질문을해야합니다 : LC_ALL이 locale-gen 명령으로 어떻게 설정되지 않았습니까? 다른 답변 이이 위에 언급 되었습니까?
alexserver

이상하게도 위의 모든 솔루션이 효과가 없었지만 이것은 효과가 없었습니다! 수출 후 LC_ALL마침내 사용할 수 있습니다 sudo dpkg-reconfigure locales.
sobi3ch

마지막으로 많은 트릭을 시도한 후에 이것은 kubuntu 14.04.3 lts에서 저에게 효과적입니다. 감사!
요나

94

원격으로 연결하는 경우 일반적인 문제이므로 로캘을 전달하지 않는 것이 좋습니다. 라인을 편집 /etc/ssh/ssh_config하고 주석 처리 하십시오 SendEnv LANG LC_*.


6
다른 답변을 시도했지만 답변을 볼 때까지 원격으로 연결하는 것을 잊었습니다. ssh 서버 및 클라이언트의 다른 로케일로 인해 문제점이 발생했습니다.
Hieu

2
OSX (ubuntu에 연결)는/etc/ssh_config
Michiel de Mare

이것을하는 한 줄짜리 : sed -e '/SendEnv/ s/^#*/#/' -i /etc/ssh/ssh_config(서버 프로비저닝에 유용)
Albin

로케일 시스템에서 LC_ALL을 설정할 수 없지만 원격 서버의 문제점을 해결했습니다.
Alexander Shlenchack

1
아마도 원격이 아닌 로컬 시스템에서 파일을 편집해야한다는 점에 주목할 가치가 있습니다.
Clashsoft

72

이에 대한 명령이 있습니다.

sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

/etc/default/locale제공된 값으로 업데이트 됩니다.


4
이것은 합법적입니다! 셸에서 로그 아웃 / 다시로드하는 것을 잊지 마십시오. 그렇지 않으면 변경 사항이 표시되지 않습니다. 로케일 생성 및 재구성에 대한 승인 된 답변을 확인하는 것을 잊지 마십시오.
Erik Zivkovic

1
locale여전히 실행 하면 utf 값이 표시되지 않습니다.
Cerin

@Cerin : Myybe, 전화 locale-gen가 없습니다. 전에는해야 apt-get install locales합니다.
koppor

1
우분투 16.04의 루트 쉘에 대한 LANG는 /root/.profile에서 무시되므로 LANG은 변경되지 않습니다.
Willem

32

12.10에서 나를 위해 일한 것은 다음과 같습니다.

apt-get install language-pack-en-base  

이 후 한 dpkg-reconfigure locales결과가 발생하지 않습니다.


2
이것이 가장 좋은 대답입니다. 내 로케일이 잘못 설정되지 않았지만 실제로 존재하지 않았습니다. 나는 이것이 OP의 문제와 비슷하다고 생각합니다 (로케일 올바르게 설정되어 있으면 "그러한 파일이나 디렉토리가 없습니다" ).
획기적인

1
우분투 12.04에서 apt-get을 사용할 때마다 OP 문제가 발생했습니다. 이는 파일을 편집하지 않고도 완벽하게 해결했습니다.
Deepend

"language-pack-en-base는 이미 최신 버전입니다."
karlingen

로그 아웃하고 로그인 도움이 될 수 있습니다
SMMousavi

chroot데비안 의 우분투 에서 나를 위해 일했습니다 . 감사합니다 :)
Wyatt8740

18

종료 한 후 다시 로그인하여 SSH 세션 (또는 X11)을 종료하는 것을 잊지 마십시오. 다시 로그인하지 않으면 이러한 제안이 모두 효과가 없었습니다 ....


2
이 의견은 더 많은 찬사를 받거나 모든 답변에서 사실을 강조해야하는 것이 가장 적어야합니다.
ni8mr

11

우분투 12.10의 경우 ratzs 솔루션을 제외하고 위의 어느 것도 작동하지 않았습니다. 이것을 /etc/bash.bashrc 파일에 추가하는 것이 좋습니다.

export LC_ALL="en_ZA.UTF-8"
export LC_CTYPE="en_ZA.UTF-8"

위의 모든 솔루션 중. 이것은 나를 위해 일한 유일한 것입니다.
JohnnyQ

11

로컬 컴퓨터가 설정된 이상한 상태에 빠져서 es원격 컴퓨터 (via vagrant)가 처리되지 않은 상태로 프로비저닝되었습니다. 따라서 export=성공적인 사용을 위해 매뉴얼 만 사용해야 했습니다 dpkg-reconfigure. 그렇다면 시스템은 괜찮습니다.

export LC_ALL="en_US.UTF-8"
sudo dpkg-reconfigure locales

베스트! dpkg-recofiguremojibake 표시 로 인해 .
오리엔트

9

위의 문제를 해결하기 위해 bash 스크립트 를 작성했습니다. 위의 답변은 유용하지만 단순히 쉘 변수의 값을 내보내 로케일 변수를 설정하면 세션에서만 작동합니다. 로케일 변수를 .bash_profile 파일로 내 보내서이 문제를 영구적으로 해결했습니다. /etc/profile대신 파일 을 사용할 수도 있습니다 .bash_profile.

echo "export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8">>~/.bash_profile

잊지 마세요 과에 따라 스크립트를 쉽게 설정에서.source.bash_profile


8

당신은 시도 할 수 있습니다:

export LANGUAGE=ru_RU.UTF-8
export LC_CTYPE=ru_RU.UTF-8
export LC_NUMERIC=ru_RU.UTF-8
export LC_TIME=ru_RU.UTF-8
export LC_COLLATE=ru_RU.UTF-8
export LC_MONETARY=ru_RU.UTF-8
export LC_MESSAGES=ru_RU.UTF-8
export LC_PAPER=ru_RU.UTF-8
export LC_NAME=ru_RU.UTF-8
export LC_ADDRESS=ru_RU.UTF-8
export LC_TELEPHONE=ru_RU.UTF-8
export LC_MEASUREMENT=ru_RU.UTF-8
export LC_IDENTIFICATION=ru_RU.UTF-8
export LC_ALL=ru_RU.UTF-8

ru_RU국가 코드는 어디에 있습니까 ?


7

인적 오류가있을 수 있으므로 문제 해결 전략에서 현재 허용되는 답변으로는 충분하지 않습니다. 당신 설정 시스템은 할 수 en_US있지만, 당신은 en_GB에서 사용할 수 /etc/locale.gen내가 스레드에 있었다처럼 여기 라즈베리 파이 3B합니다. 에서 사용 된 모든 로캘을 활성화 해야합니다 /etc/locale.gen.

나는에서 en_GB.UTF-8 UTF-8만 사용하도록 설정했습니다 /etc/locale.gen. en_US.UTF-8 UTF-8다른 명령으로 인해 활성화되어 있어야 합니다. 그래서 나는 GB와 주석 처리되지 않은 미국에 대해 언급했으며 모든 것이 이제 작동합니다.

masi@raspberrypi:~ $ sudo vim /etc/locale.gen

masi@raspberrypi:~ $ sudo locale-gen 
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.

masi@raspberrypi:~ $ sudo a2enmod rewrite && a2enmod headers && a2enmod ssl
Module rewrite already enabled
Module headers already enabled
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Module socache_shmcb already enabled
Module ssl already enabled

이제 어떤 명령으로도 로케일 실수가 발생하지 않습니다.

시스템 : Raspbian Jessie
하드웨어 : Raspberry Pi 3b


6

데비안 위키에서 언급했듯이 /etc/locale.gen, 시스템에서 지원하고자하는 모든 로케일을 편집 하고 추가 할 수 있습니다 . 그런 다음 실행

sudo dpkg-reconfigure locales

시스템의 로케일을 업데이트합니다. 이제 추가 / 주석 해제 된 모든 로켈을 /etc/locale.gen경고없이 시스템 에서 사용할 수 있습니다.


3

KDE 환경을 사용하는 경우 setlocale.sh파일을 ~/.kde/env/다음 에서 확인하십시오 .

$ cat ~/.kde/env/setlocale.sh 
export LANG=en_US.UTF-8
export LANGUAGE=en_US:ru:en

이것은 내 엉덩이를 구했다 .... 감사합니다! 이 로케일 쓰레기가 얼마나 많은 장소에 있는지 믿을 수 없을 것입니다 ... 그리고 세계에서 KDE가 두 가지 다른 로케일 (위치, 돈 등에 대한 is_IS, 존재하지 않는 is_EN에 언어에 대한 en_EN)을 혼합하여 어떻게 물건을 망칠 수 있습니까? 장소)! Grmpfh.
StFS

2
  1. sudo dpkg-reconfigure"로케일"설정이 유효하지 않거나 일치하지 않는 동안 설치 한 응용 프로그램에 대해서도 실행해야 할 수도 있습니다 .

    시스템 로케일이 잘못 설치 동안 나는 설치 vim. 나중에 시스템 로케일이 고정되었을 때 나는 상황을보고 vim하면서 잘못 이상한 문자를 UTF-8 문자를 보여주는데 nano하고 less올바르게 표시하고 있습니다. 달리는

    sudo dpkg-reconfigure vim
    

    시스템 설정이 수정 된 후 문제를 해결하는 것으로 나타났습니다.

  2. 또한 이미 언급 한 것과 동일한 것을 알았습니다. 변경 사항을 표시하려면 SSH 연결을 끊었다가 다시 연결해야 할 수도 있습니다.


2

~/.profile나를 위해 다음 텍스트를 추가하십시오 .

export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

Linode에서 Ubuntu 16.04 LTS 64 비트 서버를 사용하고 있습니다.


2

이것은 동일한 문제가있을 때 나를 위해 일했습니다 ( dman이 제공 한 솔루션을 기반으로 ).

sudo sh -c "echo -e 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"

댓글에 URL을 추가하는 방법을 잘 모르겠습니다. @EliahKagan
pythonhunter

1
아무런 문제가 없습니다. 주석 옆에 날짜 / 시간 소인이 바로 링크되어 있습니다. ... 그래서 나는 glarrain의 의견 ( >대신에 전화하는 것 >>)이 dman의 의견 처럼 보입니다. 나는 실제로 어떤 방법이 옳고 가장 좋은지 잘 모르겠지만, 이것에 대한 통찰력이 있다면 더 많은 정보 로이 답변을 확장 할 수 있습니다. (그렇지 않아도됩니다.)
Eliah Kagan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.