【问题标题】:After updating glibc: Segmentation fault (core dumped)更新 glibc 后:分段错误(核心转储)
【发布时间】:2018-09-29 08:29:27
【问题描述】:

我一直在使用 centos 6.5。在我使用 yum 更新我的 glibc 之后。

yum update glibc

我发现我的“yum”命令和“python”命令都会抛出如下错误:

我已经厌倦了其他 shell 命令,例如:ls ll ln rm mv 等。这些命令工作正常。当我检查我的 libc 链接时,结果如下:

此外,我尝试使用

打印我的 libz 配置
ldconfig -v|grep libz

结果如下:

我想知道为什么会发生这种情况。我真的需要你们的帮助来解决这个问题。

更重要的是,我的“gdb”也会抛出这个错误。当我使用“dmesg”命令时,我收到如下消息:

【问题讨论】:

    标签: linux segmentation-fault glibc yum centos6.5


    【解决方案1】:

    CentOS 6 基于 glibc 2.12。符号链接指向 glibc 2.16,因此您尝试安装不属于操作系统的 glibc 包。这已经损坏了系统,可能无法修复。您将重新安装它并从备份中恢复数据。

    避免重新安装是一项复杂的操作。您需要确保您仍然拥有 glibc 2.12 的所有文件(名称以 -2.12.so 结尾)。然后,您可以删除 glibc 2.16 文件(以 -2.16.so 结尾的文件),使用单个 rm 调用。 (单个 rm 调用是必要的,因为一旦您开始删除 glibc 2.16 文件,rm 将停止工作。)之后,您可以运行 ldconfig 以取回正确的符号链接。

    您也可以尝试使用slnln -sf 手动修复符号链接,但您必须一次性删除glibc 2.16 文件。在您执行后者之前,每次 ldconfig 调用都会带回 glibc 2.16 符号链接。而ldconfig 会在安装包的过程中自动运行,因此很容易意外发生。

    【讨论】:

    • 但是 2.12 所以文件仍然存在。如何将所有符号链接更改为 2.12?
    • @sweetstar86 我在回答中添加了一些注释。
    • 感谢您的所有建议。现在外壳将正常运行。但我碰巧发现我的 libcap.so.2 现在链接到 libcap.so.2.16。而我的 lib64 目录只包含 libcap.so.1.10libcap.so.2.16.
    • libcap 不相关,它不是 glibc 的一部分。您安装这两个版本甚至可能是正常的,因为它们具有不同的 soname。这对于 glibc 是不同的,所有版本都有 libc.so.6 作为 soname,因此会发生冲突。
    猜你喜欢
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    • 2015-06-25
    • 2021-06-03
    相关资源
    最近更新 更多