升级到 Ubuntu 18.04.5 后 Ubuntu 18.04 上 glibc 的排序方法发生重大变化

升级到 Ubuntu 18.04.5 后 Ubuntu 18.04 上 glibc 的排序方法发生重大变化

我有一个带有 Postgres 9.6 的 Ubuntu 18.04.0。

在 Ubuntu 升级之前以下命令结果是:

vodka@ubuntu140:~$  ( echo "1-1"; echo "11" ) | LC_COLLATE=en_US.UTF-8 sort
1-1
11

但是通过(18.04.5)将 Ubuntu 18.04 升级到最新版本后,apt upgrade上述命令的结果完全改变了:

vodka@ubuntu140:~$ ( echo "1-1"; echo "11" ) | LC_COLLATE=en_US.UTF-8 sort
11
1-1

因此,我们的生产 Postgres 数据库开始运行非常缓慢,并且 REINDEX 停机时间很长。排序方法对于 Postgres 数据库非常重要: https://wiki.postgresql.org/wiki/Locale_data_changes

请阅读“测试整理”部分。

这是 Ubuntu 的正常行为吗?为什么 glibc 在 LTS 版本中完全改变而没有“重大升级”?我没想到这一点……

答案1

为什么 glibc 在 LTS 版本中完全改变而没有“重大升级”?

但事实并非如此。

18.04.5 基于 glibc-2.27,它仍然具有“旧”Unicode CLDR

更新的 CLDR 附带 glibc-2.28。

使用 18.04.5 获得的结果似乎合法,而您提到的使用 18.04.0 的结果很奇怪,就好像旧版本具有较新的 glibc 库,并且 18.04.0 => 18.04.5 进行了降级。

换句话说,您提到的旧结果实际上是新的(从 18.04 的角度来看是未来的结果),而您提到的新的结果实际上是旧的。

相关内容