US 키보드에서 AWS(EC2)를 사용합니다. manpath: can't set the locale; 의 해결책.

문제



EC2로 로그인하면 다음 오류가 표시됩니다.
manpath: can't set the locale; make sure\$LC_* and $LANG are correct

(US 키보드를 사용하는 기사가 별로 보이지 않고 고생했기 때문에 메모로 남겨 둡니다.)

오류 내용


~ % ssh aws_key_rsa 
Last login: Sat Feb 27 17:21:44 2021 from kd059138042141.ppp-bb.dion.ne.jp

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
-bash: warning: setlocale: LC_CTYPE: cannot change locale (us_US.UTF-8): No such file or directory
-bash: warning: setlocale: LC_COLLATE: cannot change locale (us_US.UTF-8): No such file or directory
-bash: warning: setlocale: LC_MESSAGES: cannot change locale (us_US.UTF-8): No such file or directory
-bash: warning: setlocale: LC_NUMERIC: cannot change locale (us_US.UTF-8): No such file or directory
-bash: warning: setlocale: LC_TIME: cannot change locale (us_US.UTF-8): No such file or directory
manpath: can't set the locale; make sure $LC_* and $LANG are correct
[user@ip-address ~]$ 

오류가 발생한 상황



인스턴스 작성 후, 다음과 같이 타임 존에 UTC(세계 협정 시각)가 디폴트 설정되어 있었습니다.
$ timedatectl
               Local time: Sun 2019-08-25 10:27:53 UTC  ……①
           Universal time: Sun 2019-08-25 10:27:53 UTC
                 RTC time: Sun 2019-08-25 10:27:52
                Time zone: UTC (UTC, +0000)  ……②
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

나는 위의 ①Local time 과 ②Time zone 에 변경을 했습니다.
$ timedatectl list-timezones | grep Asia/Tokyo
Asia/Tokyo
# 日本時間がタイムゾーンに設定可能かどうかを確認するコマンド。

$ sudo timedatectl set-timezone Asia/Tokyo
# Time zone を Asia/Tokyo に変更する。

그 결과가 아래의 ①’과 ②’입니다.
[user@ip-address ~]$ timedatectl
      Local time: 日 2021-02-28 08:31:59 JST  ……①’
  Universal time: 土 2021-02-27 23:31:59 UTC
        RTC time: 土 2021-02-27 23:31:59
       Time zone: Asia/Tokyo (JST, +0900)  ……②’
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

이 근처에서 로그인시 오류가 발생합니다.
※복수의 설정을 동시에 변경하고 있었기 때문에, 디폴트로부터 위의 상황만을 시험했을 경우, 재현성이 없는 경우가 있습니다.

오류가 발생할 때 환경 변수



[user@ip-address ~]$ locale
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
LANG=us_US.UTF-8
LC_CTYPE="us_US.UTF-8"
LC_NUMERIC="us_US.UTF-8"
LC_TIME="us_US.UTF-8"
LC_COLLATE="us_US.UTF-8"
LC_MONETARY="us_US.UTF-8"
LC_MESSAGES="us_US.UTF-8"
LC_PAPER="us_US.UTF-8"
LC_NAME="us_US.UTF-8"
LC_ADDRESS="us_US.UTF-8"
LC_TELEPHONE="us_US.UTF-8"
LC_MEASUREMENT="us_US.UTF-8"
LC_IDENTIFICATION="us_US.UTF-8"
LC_ALL=

[user@ip-address ~]$ localectl
   System Locale: LANG=us_US.UTF-8   #この列を、以下で編集していきます。
       VC Keymap: us
      X11 Layout: us
       X11 Model: pc105+inet
     X11 Options: terminate:ctrl_alt_bksp

[user@ip-address ~]$ timedatectl
      Local time: 日 2021-02-28 08:19:29 JST  ……①’
  Universal time: 土 2021-02-27 23:19:29 UTC
        RTC time: 土 2021-02-27 23:19:29
       Time zone: Asia/Tokyo (JST, +0900)  ……②’
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

[user@ip-address ~]$ vim /etc/locale.conf
Lang=us_US.UTF-8 

해결책



①Terminal 설정 변경



Terminal > Preferences > Profiles > Advanced > Set locale environment variables on starup을 선택 해제합니다.


②Language & Region 확인




Region이 Japan으로, Preffered languages의 톱이 English로 되어 있습니다.

③ $LANG 변경


vim /etc/locale.conf
Lang=ja_JP.utf8

④System Locale 변경


[user@ip-address ~]$ sudo localectl set-locale LANG=ja_JP.utf8
[user@ip-address ~]$ localectl
   System Locale: LANG=ja_JP.utf8  #先ほどの LANG=us_US.UTF-8 から変わりました。
       VC Keymap: us
      X11 Layout: us
       X11 Model: pc105+inet
     X11 Options: terminate:ctrl_alt_bksp
[user@ip-address ~]$ vi /etc/locale.conf

⑤reboot하고 다시 로그인한다.


$ sudo reboot
Connection to {IPアドレス} closed by remote host.
Connection to {IPアドレス} closed.
% ssh aws_key_rsa 
Last login: (略)

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[user@ip-address ~]$ 

이제 오류가 없어 EC2에 로그인할 수 있었습니다.

보충①


[user@ip-address ~]$ locale
LANG=ja_JP.utf8
LC_CTYPE="ja_JP.utf8"
LC_NUMERIC="ja_JP.utf8"
LC_TIME="ja_JP.utf8"
LC_COLLATE="ja_JP.utf8"
LC_MONETARY="ja_JP.utf8"
LC_MESSAGES="ja_JP.utf8"
LC_PAPER="ja_JP.utf8"
LC_NAME="ja_JP.utf8"
LC_ADDRESS="ja_JP.utf8"
LC_TELEPHONE="ja_JP.utf8"
LC_MEASUREMENT="ja_JP.utf8"
LC_IDENTIFICATION="ja_JP.utf8"
LC_ALL=

LC_*가 자동으로 전환되었음을 확인할 수 있습니다.

보충② (당시의 나의 .bash_profile의 상황입니다.)


[user@ip-address ~]$vim .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

환경 변수에 대한 게시물을 위해 보충하십시오.

좋은 웹페이지 즐겨찾기