最近、Ubuntuを18.04に更新しました。この後、コマンドld
の発行は常に次のアサーションで失敗しました:
loadlocale.c:129: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
私はこの問題をグーグル検索しましたが、これはよく知られている問題のようです。私が読んだすべてのソリューションは、次のコマンドを使用してこれを修正することを提案しました:
export LC_ALL=C
たとえば this one を参照してください。しかし、そうすると、私の母国語のコメントのフォントがVIMなどで壊れます。
したがって、このソリューションは私には適していません。この問題を修正する他の方法はありますか?
Ubuntu 14でこの問題が発生しましたが、次のように解決しました。
まず、/etc/locale.gen
を編集して、必要なロケールを追加します。
ロケール名のutf8
が小文字であることを確認してください。 UTF-8
。
だから私は:
en_US.utf8
ru_RU.utf8
Rootとして実行します。
rm -f /usr/lib/locale/locale-archive
locale-gen --no-archive
locale-gen --no-archive en_US.utf8
locale-gen --no-archive ru_RU.utf8
--no-archive
フラグは重要です。
次に、~/.bash_profile
や~/.bashrc
などのスタートアップファイルで、LANG
および関連する変数を小文字のutf8
フォームに設定します。正しいフォームについては、/usr/lib/locale
のディレクトリを参照してください。