apt:再配置エラー:バージョンGLIBCXX_3.4.21がリンク時間参照を含むファイルlibstdc ++。so.6で定義されていません


63

16.04 xenialにアップグレードしようとして以来、私は

$ apt
apt: 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

単に実行してaptいるとき。言うまでもなく、これにより何もすることが難しくなります。

ヒントはありますか?


うわー…これは、Ubuntu / Canonicalのアップグレードプロセスに本当に不信感を抱かせます。私が持っているたびに作業が、古いバージョンでは、ヘルプフォーラムで誰かがアップグレードはすべての私の問題を解決する私に語った...私は、「スクラッチディスクは」あるかわからない、と確かに作業を中断する必要はしたくないGRUBのデバッグ…
同型

回答:


55

UbuntuツールチェーンのPPAの問題が原因で同じ問題が発生しました。そのためにコンピューターが起動しません。彼の答えに対する@ w00kieのコメントに続いlibstdc++6Xenial、リンクのhttps://packages.ubuntu.com/xenial/libstdc++6でパッケージのdebianを(ttyターミナルから)ダウンロードし、を使用してインストールしましたdpkg -i。これでコンピューターは正常に動作します。

手順

wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb
sudo dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb

# I also found this helpful
sudo apt-get -f install

5
答えにステップバイステップでコマンドを入れていただけますか?私はすべてでは、このに慣れていないんだと、私のLinuxマシンがhorkedされています...
ザカリーフィールズ

@Zacharyあなたが直面している正確な問題は何ですか?起動できますか?
サガルジャ

1
あんまり。約15分間画面がちらつくと、非常に薄い灰色のtty2端末プロンプトが表示されます。使用できませんapt(または実際にツールを使用できません)。libstdc++6...debブート可能なUSBドライブからダウンロードし、パッケージを手動で配置し、壊れたシステムに再起動して、.deb使用sudo dpkg -i libstdc++6...debしているものをインストールしようと試みましたが、それが何であるかさえわかりませんdpkg
ザカリーフィールド

13
.debファイルをダウンロード/インストールするには、次の操作を実行できます。wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.2_amd64.debダウンロードしたら、dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.2_amd64.deb64ビットシステムを想定します。私にとっては、私のインターネット接続が機能していなかったので、私は手動で(私の問題のコンピュータにUSBドライブをマウントする必要がありました、その後、別のコンピュータからUSBドライブにそれをダウンロードした右のUSBに差し込む後の端末出力を見ていました)そして、上記のコマンドを実行します。sudo mount /dev/sdc1 /media/usbsdc1dpkg
ギャレット

7
dpkg --force-all -i libstdc+‌​+6_5.4.0-6ubuntu1~16‌​.04.2_amd64.debそれをインストールするために使用しなければなりませんでした
virtualxtc

26

犯人は、Ubuntu Toolchain Uploads(制限付き)のPPAからの残り物、特に

/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.22

これに対処する2つの可能性があります。

  • すでにppa-purgeインストールされています。それから

    sudo ppa-purge ppa:ubuntu-toolchain-r/test
    

    問題を修正します。

  • Xenst用のlibstdc ++ 6をダウンロードし、それを介してインストールすることにより、libstc ++をオーバーライドしますdpkg -i


4
少なくとも私にとっては、これは質問のメッセージと同じメッセージで失敗します
...-mbdevpl

1
おそらくppa-purge動作しません(同じpython)
-user64204

1
私は得る:sudo: ppa-purge: command not found
ギャレット

@ギャレットsudo apt install ppa-purge
ニコシュレーマー16

3
@NicoSchlömer、ありがとう、しかし実際には、私aptも動作していなかったと思います(元の投稿によると)。
ギャレット

8

このエラーのため、コンプが正しく起動できませんでした。Apt-getは動作しませんでした。Gnomeも動作しませんでした。これは、14.04から16.04にアップグレードした直後です。を入力してttyで解決しました

sudo apt-add-repository --remove ppa:ubuntu-toolchain-r/test

この時点でapt-get再び機能し始め、そこからすべての問題を修正することができました。

sudo apt-get clean
sudo apt-get update
sudo apt-get install -f
sudo dpkg -a --configure
sudo apt-get dist-upgrade

また、(更新コマンドの後に)Virtualboxをアンインストールして、後で再インストールする必要がありましたが、これは無関係だったと思います。


2
これを試してみましたが、apt_pkgパッケージでインポートエラーが発生しました
Mixone

Mixone、正確なエラーは何で、どのコマンドで正確に?
マチャズ

sudoのエラーは、私が推測するPythonのバックエンドから来た更新apt-getは、スタックトレースは、Pythonであり、それは基本的に、モジュールapt_pkgを見つけることができないと述べた
Mixone

5
私にとっても同じ問題apt-add-repository、あなたの答えでコマンドを使用しようとすると:ImportError: /usr/lib/x86_64-linux-gnu/libapt-pkg.so.5.0: symbol _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_, version GLIBCXX_3.4.21 not defined in the file libstdc++.so.6 with link time reference
ギャレット

私のようなバカにとって、リリースから2年後にアップグレードを試みて、すべてのバグが修正されたと考えています。上記のコメント内のリンクは壊れています。これが新しいものです。 http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb(またはi386その両方)dpkgがあなたを呪うことを気にしないでください。やる--auto--deconfigureとあなたのapt-getエラーメッセージにもかかわらず、その後再び軌道になります。そして、適切な-f --install+で終了し--upgrade、新しいシステムで再起動できます。
Ufos

4

私は問題が私に固有のものであり、ダウンロードエラーが原因であると考えていました。

この議論は私に必要な手がかりを与えてくれました。基本的に、必要なのは、障害のあるシステムの/ usr / lib / x86_64-linux-gnuにあるlibstdc ++。so.6.0.22をlibstdc ++。so.6.0.21に置き換えることだけでした。(新しいバージョンにはエラーがあるようです。)

これは、サムドライブから、または私の場合のように、スクラッチディスクから実行できます。

完全な詳細:https : //answers.launchpad.net/ubuntu/+question/395832

ありがとうございます...


このトリックを使用しましたが、いくつかの予備スペースでデュアルブートを実行しました。元のパーティションを簡単にマウントできました。とても簡単でした。
アンドリュー

素晴らしい-これらの3つのコマンドは私のために働いた:cd / usr / lib / x86_64-linux-gnu / >>> sudo rm libstdc ++。so.6 >>> sudo ln -s libstdc ++。so.6.0.21 libstdc ++。so.6
オスマン

3

dpkg -i受け入れられた答えのアプローチに従って、私の14.04-> 16.04アップグレードには1つではなく2つのパッケージが必要でした。

gcc-5-base_5.4.0-6ubuntu1~16.04.4_i386.deb
libstdc++6_5.4.0-6ubuntu1~16.04.4_i386.deb

この後apt upgrade、残りのパッケージをダウンロードしてインストールを完了することができました。


2

YakketyのSnappyで「conjure-up」スナップの最新バージョンがインストールされている場合、非常によく似たエラーでaptが破損します。

apt: relocation error: /usr/lib/x86_64-linux-gnu/libapt-private.so.0.0: symbol _ZN13pkgSourceList16AddVolatileFilesER11CommandLinePSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS8_EE, version APTPKG_5.0 not defined in file libapt-pkg.so.5.0 with link time reference

このバグのため:

https://bugs.launchpad.net/snappy/+bug/1a677417

現在、私が知っている唯一の回避策は、conjure-upスナップを削除することです(以前にインストールされていた場合は、スナップを以前のバージョンに「スナップ復元」することもできます)。


1

私のために働いた修正は、実際にUbuntuツールチェーンppaを追加することでした:

sudo apt-add-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -f
sudo apt-get upgrade

0

次のように入力して修正できるはずです。

sudo apt-get -f install

パッケージを指定せずに。作業を行う必要があります。


0

i386システムでも同様の問題が発生する可能性があります。

この問題を解決するには、gcc-5-baseをVersion 5.4.1-2ubuntu1~12.04からにダウングレードする必要もありました5.4.0-6ubuntu1~16.04.4

合理的なシステムへのアップグレードを完了するにdpkg --purge on vituoso_nepomukは、問題を引き起こしている構成ファイルを取り除くためにand virtualbox を使用する必要がありました(私にとって、VirtualBoxはアップグレードによって無傷のように見えるパッケージvirtualbox-5.1によって提供されます。 )

重要なのはdpkg --configure dbus仕事をすることでした。

ttyタイプの画面でwgetを有効にするには、ユーザーはsudo dhclient eth0有線イーサネット接続を有効にするために実行する必要もあります。


0

Linuxでubuntuディストリビューションをアップグレードするときにこの問題が発生しました:

# ls /usr/lib/x86_64-linux-gnu/libstdc++.so.6*
libstdc++.so.6 -> libstdc++.so.6cd*
libstdc++.so.6.0.20*
libstdc++.so.6.0.21
libstdc++.so.6cd -> libstdc++.so.6.0.20*

libstdc ++。so.6-> libstdc ++。so.6cd-> libstdc ++。so.6.0.20

ただし、libstdc ++。so.6.0.21とlibstdc ++。so.6.0.20の2つのファイルがありました。

最新バージョンのlibstdc ++。so.6.0.21を指すようにシンボリックリンクを変更しました

cd /usr/lib/x86_64-linux-gnu
rm libstdc++.so.6cd
chmod +x libstdc++.so.6.0.21
ln -s  libstdc++.so.6.0.21 libstdc++.so.6cd

結果:

libstdc++.so.6 -> libstdc++.so.6cd*
libstdc++.so.6.0.20*
libstdc++.so.6.0.21*
libstdc++.so.6cd -> libstdc++.so.6.0.21*

そしてすべてが正常に戻った


0
  1. UbuntuパッケージマネージャーのWebサイトからUbuntuのlibstdc ++ 6をダウンロードします。(uname -ah / wおよびs / wアーキテクチャを見つけるために使用します)。

  2. 走る

    sudo dpkg --install --auto-deconfigure libstdc++6...deb
    
  3. リブート。Ubuntuは起動するはずですが、aptは新しいパッケージをインストールしません。

  4. 依存関係を修正してシステムを最新の状態にするには、次のコマンドを実行します

    sudo apt-add-repository ppa:ubuntu-toolchain-r/test
    sudo apt-get update
    sudo apt-get install -f
    sudo apt-get upgrade
    sudo apt-get dist-upgrade
    sudo apt-get autoclean && sudo apt-get autoremove  
    
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.