.png)
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
それ自体はまったく使用できないため、再インストールなどの操作を行うことはできません。
パッケージを管理するために使用しているプログラム自体が影響を受けて使用できない場合、これらのパッケージを修正して再インストールするにはどうすればよいでしょうか?
答え1
最初は手動でコピーすることでグラフィカルログインシェルを取得できましたlibstdc++.so.6.0.21
ライブ USB スティックからその場所にコピーし、 からそのリンクを作成しますlibstdc++.so.6
。Ubuntu 16.04 のデフォルトであると思われるため、このバージョンを使用しました。また、エラー メッセージに記載されている「21」(「バージョン GLIBCXX_3.4.21」) も含まれています。
これはグラフィック スタックの要件を満たしているように見えましたが、libstdc++6 に依存する他のプログラムでは同じエラーが残りました。何度か試した後、次の手順を使用して手動でインストール (アンインストール) することapt
で、問題全体を解決できました。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