当使用错误版本的 gcc/binutils 时,如何从升级中恢复?

当使用错误版本的 gcc/binutils 时,如何从升级中恢复?

几天前我从 9.04 升级到了 10.10,但事情真的很混乱 - X 不断崩溃。

从那时起,我的应用程序就莫名其妙地出现了段错误,当我调试时,我发现是strlen()它导致了段错误(指出 libc 是问题所在)!经过调查,我发现这是因为我在 /usr/bin/local 中安装了错误版本的 gcc 和 binutils;我删除了它,重新编译了应用程序,它不再崩溃了。

现在,查看我的日志,我发现 X 也由于 libc 而崩溃。

Backtrace:
0: /usr/bin/X11/X (xorg_backtrace+0x3b) [0x80ef31b]
1: /usr/bin/X11/X (0x8048000+0x5d00d) [0x80a500d]
2: (vdso) (__kernel_rt_sigreturn+0x0) [0xb77e240c]
3: /usr/bin/X11/X (0x8048000+0xbb0b6) [0x81030b6]
4: /usr/bin/X11/X (0x8048000+0xbc3ef) [0x81043ef]
5: /usr/bin/X11/X (0x8048000+0x26ee7) [0x806eee7]
6: /usr/bin/X11/X (0x8048000+0x1a5da) [0x80625da]
7: /lib/libc.so.6 (__libc_start_main+0xe7) [0xb750ace7]
8: /usr/bin/X11/X (0x8048000+0x1a1b1) [0x80621b1]
Segmentation fault at address 0x32156654

Caught signal 11 (Segmentation fault). Server aborting

那么,我该如何恢复呢?

答案1

此时,我希望挽救尽可能多的文件(例如/home/etc和的部分/var),并从经过验证的 CD 进行全新安装(即检查下载的 ISO 的 md5 校验和)。

您可能还需要一个已安装软件包的转储列表,使用如下命令:

aptitude search -F "%p" "?installed ?not(?automatic)" > ~/package-list

一旦您进入一个干净的系统,您就可以恢复原来的内容、设置和应用程序。

如果发生同样的事情,请运行 memtest(如果按住左移键,则应该是启动时的一个选项)并从 LiveCD 运行 fsck。

答案2

还要从 /usr/local 中删除坏的 libc。事实上,您可能只想删除 /usr/local 中的所有内容。

相关内容