我正在使用基于 Debian 的 64 位 Crunchbang。
我试图修复 libc6 的一个问题,并天真地听从了 askUbuntu 答案的建议(关联)让我运行以下命令:
sudo ln -sf /lib32/libc.so.6 /lib/x86_64-linux-gnu/libc.so.6
现在我无法运行任何终端命令或 GUI 程序。在终端上我收到大量错误。例如ls
:
ls:加载共享库时出错:libs.so.6:错误的 ELF 类:ELFCLASS32
sed:加载共享库时出错:libs.so.6:错误的 ELF 类:ELFCLASS32
/usr/bin/env:加载共享库时出错:libs.so.6:错误的 ELF 类:ELFCLASS32
日期:加载共享库时出错:libs.so.6:错误的 ELF 类:ELFCLASS32
sed:加载共享库时出错:libs.so.6:错误的 ELF 类:ELFCLASS32
GUI 程序根本无法启动或者给我奇怪的错误消息。
简而言之,我无法删除导致此灾难的符号链接。我该怎么做才能让我的电脑重新工作?
答案1
/lib32 文件夹只能包含 32 位库。您在 /lib32 中创建了 libc.so.6 的链接,该链接指向同一文件的 64 位版本。获取 32 位版本的 libc.so.6 并将其放在 /lib32 文件夹中。
答案2
由于你已经弄乱了你的 libc,并且通常每个有用的实用程序都依赖于它,你唯一真正方便的选择是从 Live CD / USB 启动并修复它,或者将你的硬盘驱动器放在别人的计算机上(不要从它启动)并从那里修复它。
要修复此问题,请撤消您执行的操作。
但是,您错误地选择了备份-f
选项ln
,并且假定没有备份任何原始文件,这意味着如果/lib/x86_64-linux-gnu/libc.so.6
在执行该命令之前确实存在该文件,则该文件会被覆盖。在这种情况下,最好的办法是从其他地方获取副本,最好是兼容版本,然后在机器再次运行时强制重新安装 libc,以确保正确文件的所有正确版本都在正确的位置。
如果您一开始没有该文件,那么不必担心。
清理完所有这些之后,请考虑尝试针对问题采取风险较小的解决方案,例如取消屏蔽并安装适合您平台的正确软件包等,而不是摆弄关键库的符号链接。