无法在 Debian 上升级 libc6

无法在 Debian 上升级 libc6

我尝试更新我的系统,没有任何问题,但在执行aptitude 全面升级。更新正常进行,直到我收到此错误:

 Preparing to replace libc6 2.13-21 (using .../libc6_2.13-24_amd64.deb) ...

A copy of the C library was found in an unexpected directory:
  '/lib/ld-2.11.2.so'
It is not safe to upgrade the C library in this situation;
please remove that copy of the C library or get it out of
'/lib' and try again.

dpkg: error processing /var/cache/apt/archives/libc6_2.13-24_amd64.deb (--unpack):
 subprocess new pre-installation script returned error exit status 1
configured to not write apport reports
                                      Errors were encountered while processing:
 /var/cache/apt/archives/libc6_2.13-24_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
A package failed to install.  Trying to recover:
dpkg: dependency problems prevent configuration of libc6-dev:
 libc6-dev depends on libc6 (= 2.13-24); however:
  Version of libc6 on system is 2.13-21.
dpkg: error processing libc6-dev (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of libc6-i386:
 libc6-i386 depends on libc6 (= 2.13-24); however:
  Version of libc6 on system is 2.13-21.
dpkg: error processing libc6-i386 (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 libc6-dev
 libc6-i386

现在,每当我尝试升级或安装任何软件包时,我都会收到此错误。任何移动文件的尝试都只需要移动更多文件。我也无法使用 dpkg 修复。

一些信息:

Debian Linux 3.1.0-1-amd64
#dpkg -l | grep libc6
ii  libc6                                2.13-21                       
iU  libc6-dev                            2.13-24                        
iU  libc6-i386                           2.13-24    

谢谢 !

答案1

根据评论回复...

首先检查在运行程序时是否获得了不涉及该路径的动态链接器副本。您应该看到:

$ ldd /bin/ls | grep ld-linux
    /lib64/ld-linux-x86-64.so.2 (0x00007fc695aef000)

(十六进制地址可能不同。)此文件应为指向该文件的符号链接/lib/x86_64-linux-gnu/ld-2.13.so不是是符号链接,当然不应该以 结束ld-2.11.2.so

假设这一切看起来都正确,那么继续重命名应该是安全的/lib/ld-2.11.2.so(尽管我手头有救援媒体)。在确定一切正常之前不要删除它,以防万一你需要把它放回去!

您可能会发现有关其他剩余文件的投诉,可以用同样的方式检查和处理。

显然这个建议没有经过直接测试!

答案2

我遇到了这个问题。。最后解决了

  1. chroot 到受损/停滞的系统,在那里我
  2. 将一堆 lib.so 从 lib/i38 移到该分区 /root 中的临时文件夹中,然后
  3. 创建每个符号链接。此时,就可以
  4. 启动到该分区然后
  5. 照常升级。(确切的文件列表并没有浮现在脑海中,而且可能因系统而异 - 它包括 GNU 线程库和一些其他库,每个库都会引发可怕的 - 库位于意外位置消息)升级后,新的库将位于通常的 /lib/i386(或您的等效文件)中,并且 LSB 依赖项引导将为您创建新的符号链接。当一切顺利时,您可以销毁临时文件夹和之前移动到那里的 .so。希望这能有所帮助...

相关内容