Правильный способ исправить утверждение в loadlocale.c

Недавно я обновил Ubuntu до 18.04. После этого мой лд постоянно терпел неудачу со следующим утверждением:

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

посмотрите, например, этот. Однако это нарушает шрифты комментариев к моему родному языку в VIM, например. Так что это решение не совсем подходит для меня. Есть ли другой способ исправить это?

0 ответов

Так же легко, как:

export LC_ALL=C

а затем запустите вашу команду. LC_ALL работает как резерв, если что-то не установлено (например, LC_TIME в вашем случае)

У меня была эта проблема на 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 для правильной формы.

Я добавил это в свой.bashrc, и он устранил проблему как для Ubuntu 18, так и для 20, когда у меня было то же сообщение со старым 32-битным GDB для кросс-компилятора Arm.

экспорт LANG=C

Другие вопросы по тегам