Post

Avoid Unwanted Locale Fallbacks in Ubuntu SSH Login Messages

Avoid Unwanted Locale Fallbacks in Ubuntu SSH Login Messages

Ubuntu に SSH したとき、MOTD の更新通知だけが意図しない簡体字表記になることがあった。

原因は SSH ではなく、locale fallback と update-notifier の MOTD キャッシュ。

Check

1
2
3
cat /etc/default/locale
locale
cat /var/lib/update-notifier/updates-available

問題が出ていたときは、LANGUAGE の fallback に広い華語指定が入っていた。

1
2
LANG=zh_TW.UTF-8
LANGUAGE=zh_TW:zh

修正後は、繁体字の翻訳がない場合に英語へ落とす。

1
2
LANG=zh_TW.UTF-8
LANGUAGE=zh_TW:en

Fix locale fallback

広い華語 fallback を使わず、繁体字がない場合は英語へ落とす。

1
sudo update-locale LANG=zh_TW.UTF-8 LANGUAGE=zh_TW:en

Fix apt hook

1
2
3
4
sudo cp -a /etc/apt/apt.conf.d/99update-notifier \
  /etc/apt/apt.conf.d/99update-notifier.bak

/etc/apt/apt.conf.d/99update-notifier

update-motd-updates-available の実行部分を次の形にする。

1
env LANG=zh_TW.UTF-8 LANGUAGE=zh_TW:en LC_ALL= /usr/lib/update-notifier/update-motd-updates-available

Rebuild MOTD cache

1
2
sudo sh -c 'env LANG=zh_TW.UTF-8 LANGUAGE=zh_TW:en LC_ALL= /usr/lib/update-notifier/apt-check --human-readable > /var/lib/update-notifier/updates-available'
sudo touch /var/lib/update-notifier/updates-available

Verify

1
2
3
cat /etc/default/locale
cat /var/lib/update-notifier/updates-available
run-parts /etc/update-motd.d

updates-available だけを直しても、apt hook が再生成すると戻る。

今回の要点は、LANGUAGE=zh_TW:en と apt hook の両方を直すこと。

This post is licensed under CC BY 4.0 by the author.