mv: 共有オブジェクト ファイル "libstdc++.so.6" を開けません: シンボリック リンクのネストが大きすぎます

mv: 共有オブジェクト ファイル "libstdc++.so.6" を開けません: シンボリック リンクのネストが大きすぎます

エラーはトピックのものとは少し異なる可能性があります。私は母国語から翻訳していました。

すべてが失敗した後、私はこの投稿でmjpが指摘したようにやってみました: GLIBCXX_3.4.20 が見つかりません。このエラーを修正するにはどうすればいいですか?

しかし、結果として、apt-get、mv、cp のすべてのコマンドはトピック タイトルからのエラーを返します。ファイルのバックアップ バージョンに戻ることはできません。

現時点では、Ubuntuにログインすることすらできません。ログイン画面で止まってしまいました。ログインしようとするたびに画面が真っ黒になり、ログイン画面に戻ります。Ctrl+Alt+F3 でコマンドしか使えません。

どうすればいいですか?

steeldriver さんへの回答 (コメントをご覧ください):

lrwxrwxrwx 1 root root 40 Jun 17 21:37 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 -> /usr/lib/x86_64-linux-gnu/libstdc++.so.6

-rw-r--r-- 1 root root 979056 May 7 2016 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.19

lrwxrwrwx 1 root root 19 May 7 2016 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.old -> libstdc++.so.6.0.19

答え1

mv[やのような基本的なユーティリティがcpのせいで壊れてしまうのはなぜなのか、少し不思議に思います。libstdc++.so.6しかし、それが理由だと仮定すると、私が試すのは次のようになります]

出力busybox lsを見ると、再帰的にリンクできたことが/usr/lib/x86_64-linux-gnu/libstdc++.so.6わかります。幸い、実際のライブラリは削除または上書きされていないようです/usr/lib/x86_64-linux-gnu/libstdc++.so.6.19。したがって、シンボリック リンクを再作成することで回復できるはずです。

問題は、どちらか一方sudoまたはln両方がライブラリに依存している場合ですlibstdc++。 (仮想端末でシェルを使用してログインできるため、おそらく依存bashしません。)CtrlAltF3

が壊れている場合でもsudo、リカバリモードからルートシェルを起動できるはずです。ルートシェルを起動するにはどうすればいいですか?その後、ルートファイルシステムを読み書きモードで再マウントする必要があります。

mount -o remount,rw /

その後、壊れたリンクを修正することができます

ln -sf libstdc++.so.6.19 /usr/lib/x86_64-linux-gnu/libstdc++.so.6

(これにより、相対シンボリックリンク/usr/lib/x86_64-linux-gnu/これは、リンクと同様に、ターゲット パスを基準として解決されます.old

lnが に依存しているために失敗すると仮定すると、が組み込まれているlibstdc++.so静的にリンクされた実行可能ファイルを使用して再試行できます。busyboxln

/bin/busybox ln -sf libstdc++.so.6.19 /usr/lib/x86_64-linux-gnu/libstdc++.so.6

それが機能する場合は、exitルート シェルを使用して通常のブートを続行できます。

関連情報