web-dev-qa-db-ja.com

壊れたlibstdc ++ 6の修正方法。aptも壊れます。

過去のある時点で手動のgccアップデートで何かを台無しにしてしまったようですが、これは14.04から16.04にアップグレードした今日まで問題になりませんでした。つまり、システムはlibstdc++6バージョンは問題ないが、apt(および他の多くのプログラム)はそうではないと文句を言うようです(共有ライブラリのバージョンが間違っているため)。

Sudo apt-get install --fix-broken --fix-missing
apt-get: relocation error: /usr/lib/x86_64-linux-gnu/libapt-pkg.so.5.0: symbol _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference

システムはグラフィカルモードを開始しません。上記の出力は非グラフィカルコンソール(Ctrl-Alt-F6を使用)を使用して取得されたものであり、apt自体はまったく使用できないため、私は何もできません。再インストールのような。

パッケージの管理に使用しているプログラム自体が影響を受けて使用できない場合、これらのパッケージを修正して再インストールする方法を教えてください。

6
phg

最初は、ライブUSBスティックから libstdc++.so.6.0.21 をその場所に手動でコピーし、libstdc++.so.6からリンクを作成することで、グラフィカルログインシェルを取得できました。このバージョンを使用したのは、Ubuntu 16.04のデフォルトであると思われ、エラーメッセージに記載されている「21」(「バージョンGLIBCXX_3.4.21」)も含まれているためです。

これはグラフィックススタックを満足させるように見えましたが、aptおよびlibstdc ++ 6に依存する他のプログラムでも同じエラーが残りました。いくつかの試みの後、次の手順で全体を解決できました。dpkgを使用して、手動で(アン)インストールします。

  • 16.04の適切なバージョンのdebファイルをダウンロードします。

    wget http://mirrors.kernel.org/ubuntu/pool/main/a/apt/apt_1.2.10ubuntu1_AMD64.deb http://mirrors.kernel.org/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.4_AMD64.deb
    
  • この特定のバージョンを削除すると、正しいlibstdc ++ 6のインストールがブロックされました。

    Sudo dpkg --force-depends -r libstdc++6:i386
    
  • 次に、ファイルから「良い」バージョンをインストールします。

    Sudo dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.4_AMD64.deb apt_1.2.10ubuntu1_AMD64.deb
    
  • そして最後に、更新と試行中に残した混乱を修正します。

    Sudo apt-get install -f
    
6
phg