在 loadlocale.c 中修复断言的正确方法是什么?

Ale*_*pus 15 language-support locale 18.04

我最近将 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.
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索了这个问题,看起来这是一个众所周知的问题。我读过的所有解决方案都建议使用以下命令修复此问题:

export LC_ALL=C
Run Code Online (Sandbox Code Playgroud)

例如,参见这个。但是,这样做会破坏 VIM 中我的母语评论的字体。

所以,这个解决方案不适合我-。有没有其他方法可以解决这个问题?

Raf*_*ver 7

我在 Ubuntu 14 trusty 上遇到了这个问题,我解决如下。

首先,编辑/etc/locale.gen并添加所需的区域设置。

确保utf8区域设置名称中的 是小写的,而不是 eg UTF-8

所以我的是:

en_US.utf8
ru_RU.utf8
Run Code Online (Sandbox Code Playgroud)

现在以 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
Run Code Online (Sandbox Code Playgroud)

旗帜--no-archive很重要。

现在请确保在启动文件等中将~/.bash_profile相关变量~/.bashrc设置LANG为小写utf8形式,请参阅目录/usr/lib/locale以获取正确的形式。


Den*_*lis 6

一样容易:

export LC_ALL=C
Run Code Online (Sandbox Code Playgroud)

然后运行你的命令。如果未设置某些内容,则 LC_ALL 可用作后备(例如您的情况下的 LC_TIME)