在 Ubuntu 10.10 机器上使用更新管理器升级到 Ubuntu 11.04。升级失败,导致系统处于不稳定状态。当我重新启动系统时,我在启动时出现内核恐慌。错误指向 /opt/abc/runtime/lib/libc.so.6。
通过研究我发现是第三方软件 abc 导致了问题。它有自己的运行时(libc)库。在 /lib/ 目录中有一个链接文件 /lib/ld-abc.so.2 --->/opt/abc/runtime/lib/ld-linux.so.2。
如果我们将此文件重命名为 /lib/abc.so.2 或删除此文件,则升级成功。
这是崩溃的升级日志(apt-term.log)
=====
Services restarted successfully.
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
/usr/bin/dpkg: /opt/abc/runtime/lib/libc.so.6: version `GLIBC_2.11' not found (required by /usr/bin/dpkg)
/usr/bin/dpkg: /opt/abc/runtime/lib/libc.so.6: version `GLIBC_2.8' not found (required by /lib/libselinux.so.1)
=====
您能否告诉我在 /lib 目录中存在运行时链接库文件会出现什么问题。ubuntu 升级是否也会检查第 3 部分运行时?
答案1
通过在 /lib 上提供指向第三方 libc 的链接,您将导致动态链接器对所有需要 libc 的二进制文件使用第三方 libc 而不是系统库。您不应该这样做,因为它可能会破坏您的系统,但不允许启动任何系统二进制文件。
如果您需要特定的应用程序使用它自己的库版本,请创建一个脚本并使用 LD_LIBRARY_PATH 变量,如下所示:
export LD_LIBRARY_PATH=/opt/abc/lib
/opt/abc/bin/run
答案2
由于 Unity,旧版本的 Ubuntu(10.10 及更低版本)无法无缝升级到 Ubuntu 11.04 或 11.10。
我建议您备份重要数据并重新安装...