apt-get 使用 libc 升级失败

hoo*_*enz 1 apt 13.04

我今天早上想升级 unetbootin 包。一直很顺利,直到我收到这个错误。

Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
 libc6 : Breaks: libc6:i386 (!= 2.17-0ubuntu5) but 2.17-0ubuntu5.1 is installed
 libc6:i386 : Breaks: libc6 (!= 2.17-0ubuntu5.1) but 2.17-0ubuntu5 is installed
 libc6-dbg : Depends: libc6 (= 2.17-0ubuntu5.1) but 2.17-0ubuntu5 is installed
 libc6-dev : Depends: libc6 (= 2.17-0ubuntu5.1) but 2.17-0ubuntu5 is installed
             Depends: libc-dev-bin (= 2.17-0ubuntu5.1)
 libc6-dev:i386 : Depends: libc-dev-bin:i386 (= 2.17-0ubuntu5.1)
                  Recommends: gcc:i386 but it is not installed or
                              c-compiler:i386
 libc6-i386 : Depends: libc6 (= 2.17-0ubuntu5.1) but 2.17-0ubuntu5 is installed
 libc6-x32 : Depends: libc6 (= 2.17-0ubuntu5.1) but 2.17-0ubuntu5 is installed
E: Unmet dependencies. Try using -f.
Run Code Online (Sandbox Code Playgroud)

所以我确实尝试了建议的 apt-get -f install

但这导致了以下错误

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  linux-headers-3.2.0-31 linux-headers-3.2.0-31-generic linux-headers-3.8.0-19
  linux-headers-3.8.0-19-generic python-central
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  libc-dev-bin libc6
Suggested packages:
  glibc-doc
The following packages will be upgraded:
  libc-dev-bin libc6
2 upgraded, 0 newly installed, 0 to remove and 109 not upgraded.
8 not fully installed or removed.
Need to get 0 B/4,814 kB of archives.
After this operation, 6,144 B of additional disk space will be used.
Do you want to continue [Y/n]? 
Preconfiguring packages ...
(Reading database ... 661066 files and directories currently installed.)
Preparing to replace libc6:amd64 2.17-0ubuntu5 (using .../libc6_2.17-0ubuntu5.1_amd64.deb) ...

A copy of the C library was found in an unexpected directory:
  '/lib/x86_64-linux-gnu/libc-2.15.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/x86_64-linux-gnu' and try again.

dpkg: error processing /var/cache/apt/archives/libc6_2.17-0ubuntu5.1_amd64.deb (--unpack):
 subprocess new pre-installation script returned error exit status 1
Errors were encountered while processing:
 /var/cache/apt/archives/libc6_2.17-0ubuntu5.1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Run Code Online (Sandbox Code Playgroud)

我试过 apt-get clean apt-get update && apt-get upgrade

但这也无济于事。正在发生同样的错误。我有点不确定我是否敢重启。我该如何解决?


apt-cache 策略 libc6 的输出

Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
 libc6 : Breaks: libc6:i386 (!= 2.17-0ubuntu5) but 2.17-0ubuntu5.1 is installed
 libc6:i386 : Breaks: libc6 (!= 2.17-0ubuntu5.1) but 2.17-0ubuntu5 is installed
 libc6-dbg : Depends: libc6 (= 2.17-0ubuntu5.1) but 2.17-0ubuntu5 is installed
 libc6-dev : Depends: libc6 (= 2.17-0ubuntu5.1) but 2.17-0ubuntu5 is installed
             Depends: libc-dev-bin (= 2.17-0ubuntu5.1)
 libc6-dev:i386 : Depends: libc-dev-bin:i386 (= 2.17-0ubuntu5.1)
                  Recommends: gcc:i386 but it is not installed or
                              c-compiler:i386
 libc6-i386 : Depends: libc6 (= 2.17-0ubuntu5.1) but 2.17-0ubuntu5 is installed
 libc6-x32 : Depends: libc6 (= 2.17-0ubuntu5.1) but 2.17-0ubuntu5 is installed
E: Unmet dependencies. Try using -f.
Run Code Online (Sandbox Code Playgroud)

Avi*_*Raj 5

首先去这里/lib/x86_64-linux-gnu 将这些文件移动到/rootlibc-2.17.so libdl-2.17.so libm-2.17.so libpthread-2.17.so librt-2.17.so

命令进入目录/lib/x86_64-linux-gnu并将文件复制到/root

sudo -s
cd /lib/x86_64-linux-gnu
cp libc-2.17.so /root
cp libdl-2.17.so /root
cp libm-2.17.so /root
cp libpthread-2.17.so /root
cp librt-2.17.so /root
Run Code Online (Sandbox Code Playgroud)

然后您需要使用预定义启动 bash LD_PRELOAD

LD_PRELOAD=/root/libc-2.17.so:/root/libdl-2.17.so:/root/libm-2.17.so:/root/libpthread-2.17.so:/root/librt-2.17.so bash
Run Code Online (Sandbox Code Playgroud)

删除/lib/x86_64-linux-gnu目录中文件的命令,

rm libc-2.17.so
rm libdl-2.17.so
rm libm-2.17.so
rm libpthread-2.17.so
rm librt-2.17.so
Run Code Online (Sandbox Code Playgroud)

之后dist-upgradefix-missing package将起作用:

apt-get -f install
Run Code Online (Sandbox Code Playgroud)

或者

apt-get -f dist-upgrade
Run Code Online (Sandbox Code Playgroud)