新しいUbuntu 16.04サーバーをセットアップしましたが、ロケール設定を永続的に変更しようとすると、失敗してPOSIXロケールに戻ります。
入力locale
すると、次のようになります。
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
私の知る限りでは、POSIXは「フォールバック、ASCIIエンコーディング、Cと同じ」とドキュメントに記載されているため、これはロケールがまったく設定されていないことを意味します。
ロケールde_AT.utf8
とen_US.utf8
システムに存在していたことを確認するために、私はを実行locale -a
しました。
C
C.UTF-8
POSIX
de_AT.utf8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
矛盾に注意してくださいC.UTF-8
、しかしde_AT.utf8
!さらに気になるのは、POSIXが3番目のエントリであるのに対し、別の機能しているシステムでは、リストの最後にあることです。
私の言語をに変更するためにen_US.utf8
、入力しましたsudo update-locale LANG=en_US.utf8
。locale
コマンドはまだPOSIXロケールを示しました。ログアウトして新しいログインをした後locale
も、POSIXロケールが表示されました。再起動後locale
も、POSIXロケールが表示されます。
ただし、と入力するexport LANG=en_US.utf8
と一時的に機能しますが、ログアウトするまでしか機能しません。そのため、ロケールが正しく生成されたことはかなり確実です。
アイデアが足りません。すべてのロケールを再生成してみました/etc/default/locale
が、単に無視されているように見えます。
完成させるために/etc/default/locale
、行だけが含まれていますLANG=en_US.utf8
UPDATE://私が実行してみましたsudo localectl set-locale LANG=en_US.UTF-8
、そしてlocalectl
またそれがロケールを設定することを私に示したが、再起動後も、locale
まだPOSIXを示し、非ASCII文字がまだ正しくレンダリングされません。
systemd
方法を試しましたlocalectl set-locale LANG=C.UTF-8
か?
/etc/pam.d
。で何も変更していなければ、PAMは機能するはずです。しかし、今のところハックとして/etc/profile.d/mylocalesetting.sh
、行を作成して追加することができますexport LANG=en_US.UTF-8
。
/etc/default/locale
PAMによって読み取られます。PAMを無効にした可能性はありますか?