私の質問は問題を解決するのではなく、実行に関するものですapt-get install
。この問題を解決するために見つけた最も簡単な方法は次のとおりです。
export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen
dpkg-reconfigure locales
これが完了すると、apt-get install --reinstall
ロケールが設定されていないという警告は発行されなくなります。
この問題の原因が何であるかを知りたいです。新規インストール後にこれが発生しました。テスト目的で、仮想ボックスにいくつかのインストールを行いました。そしてインストールするたびにこの問題が発生します。そして、再起動後に問題が再発生しますか?これはUbuntuでも同じです。
それでは、ロケール問題の原因が何であるかを教えてくれる人はいますか?
答え1
Perlは、起動時に環境変数(および他の変数)で指定されたロケールでコンパイルされたロケールデータが見つからないときに大声で文句を言うこと/usr/lib/locale/.../
が/usr/lib/locale/locale-archive
知られていますLANG
。次のように簡単に再現できます。
$ LANG=xyz perl /dev/null
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = "ja_JP.UTF-8",
LC_ADDRESS = "ja_JP.UTF-8",
LC_MONETARY = "ja_JP.UTF-8",
LC_NUMERIC = "ja_JP.UTF-8",
LC_TELEPHONE = "ja_JP.UTF-8",
LC_IDENTIFICATION = "ja_JP.UTF-8",
LC_MEASUREMENT = "ja_JP.UTF-8",
LC_TIME = "ja_JP.UTF-8",
LC_NAME = "ja_JP.UTF-8",
LANG = "xyz"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
したがって、デフォルトで上記の警告が表示されたら、システムで使用可能なロケールと環境変数のロケールを確認する必要があります。
locale -a
利用可能なすべてのロケールを表示、一覧localedef
表示/追加/削除するために使用できますlocale-archive
。
$ localedef --list-archive
en_US.utf8
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc
locale-gen
localedef
Debian固有の設定ファイルラッパースクリプトです/etc/locale.gen
。 dpkg-reconfigure locales
更新して/etc/locale.gen
から電話してくださいlocale-gen
。
Ubuntuには同じコマンドがありますが、locale-gen
その実装はDebianとはかなり異なるようです。/var/lib/locales/supported.d/
設定は表示できますが、dpkg-reconfigure locales
Ubuntuには影響しません。また、見ることができますコミュニティウィキの説明。
ロケール関連変数は、さまざまなプログラムによってユーザー環境で明示的または暗黙的に設定されます。通常、セッション開始pam_env.so
時/etc/default/locale
または~/.pam_environment
セッション開始時に初期化されます。具体的には、ssh
Debian/Ubuntu では、デフォルトでローカルロケール設定が自動的にリモートホストセッションに送信されます。マニュアルページ/etc/ssh/ssh_config
に次の行が表示されます。ssh_config
SendEnv LANG LC_*