Правильный способ исправить утверждение в 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