不足しているlibc.so.6をダウンロードする場所


2

最近ファイルを誤って削除しました。/lib/x86_64-linux-gnu/libc.so.6.このファイルはほとんどのプログラムで必要なため、コンピューターは基本的に壊れており、ライブUSB経由でのみハードドライブにアクセスできます。

Debianベースの64ビットCrunchbang Waldorfを実行しています。

どうすれば交換できlibc.so.6ますか?(コピー/lib64/ 含まれません。)

出力locate libc.so(ライブUSBで、破損したハードドライブがマウントされている場合)

/lib/x86_64-linux-gnu/libc.so.6
/rofs/lib/x86_64-linux-gnu/libc.so.6
/rofs/usr/lib/x86_64-linux-gnu/libc.so.6
/usr/lib/x86_64-linux-gnu/libc.so.6

/etc/apt/sources.listの内容

deb http://mozilla.debian.net/ wheezy-backports iceweasel-release

## CRUNCHBANG
## Compatible with Debian Wheezy, but use at your own risk.
deb http://packages.crunchbang.org/waldorf waldorf main contrib
# deb-src http://packages.crunchbang.org/waldorf waldorf main

## DEBIAN
deb http://http.debian.net/debian wheezy main contrib non-free
# deb-src http://http.debian.org/debian wheezy main contrib non-free

## DEBIAN SECURITY
deb http://security.debian.org/ wheezy/updates main contrib
# deb-src http://security.debian.org/ wheezy/updates main

回答:


4

ライブUSBスティックは、他の方法で実行しているものと同じディストリビューションを持っているか、少なくともDebianベースのものであると仮定します。

これらの前提で、最初にライブUSBスティックでシステムを起動します。次に/lib/x86_64-linux-gnu/libc.so.6、コマンドでファイルを所有しているパッケージを照会しますdpkg -S /lib/x86_64-linux-gnu/libc.so.6(ファイルは「libc6」という名前のパッケージが所有していることが判明しますが、とにかく良い練習です)。

USBスティックライブディストリビューションからシステムを実行している場合、Crunchbang Waldorfサイトから必要なパッケージをダウンロードします。

次に、ハードディスクドライブをディレクトリにマウントします。例のために、再び、の下にあるハードディスクドライブからルートパーティションをマウントすると仮定します/mnt

あとは、の--root /mntディレクティブを使用して必要なパッケージを再インストールするだけですdpkg。そうすれば、パッケージは実際のUSBスティックファイルシステムではなく、ハードディスクにすでにあるシステムに配置されます。


おかげで、私はこれをすぐに試してみます。しかし、私は不思議に思っています。まったく同じディストリビューションから起動して、不足しているファイルをUSBからハードドライブに単純にコピーすることもできませんか。または、これはパッケージングを台無しにしますか?
LonelyWebCrawler

2
ほとんどの場合は機能しますが、ハードディスク上のシステムで更新を実行した場合、USBライブシステム上のファイルは同一ではない可能性があります。上で提案したのはそれを正しくするための唯一の方法ではありません(別の方法は、deb-packageのまったく同じバージョンをダウンロードし、それを解凍してファイルを手動でコピーすることですが、dpkgを使用することもできます)。
サミレイン14

助けてください、サミ!packages.crunchbang.org libc.so.6パッケージが見つかりません。
LonelyWebCrawler 14

私はそれがだと思う、この1。指示どおり:最初にダウンロードしてから、dpkgを使用してインストールします。
agtoever

1

libc.so.6ファイルが中に存在するlibc6パッケージ。

libc6パッケージがマシンにインストールされたリポジトリを調べる必要があります。(チェック/etc/apt/sources.listなど)。

次に、手動でダウンロードし(たとえば、デフォルトのリポジトリを使用するDebianマシンの場合は、ここからダウンロードできます)、@ SamiLaineの指示に従ってインストールします。


申し訳ありませんが、私はパッケージがあまり得意ではなく、よく理解していません。パッケージはlibc6ですが、どこにありますか?/etc/apt/sources.list投稿にコンテンツを貼り付けました。
LonelyWebCrawler 14

0

ターミナルを開き(Ctrl + Alt + T)、次のコマンドを実行します。

64ビットUbuntuの場合:

sudo ln -s /lib64/x86_64-linux-gnu/libc.so.6 /lib64/libc.so.6

32ビットUbuntuの場合:

sudo ln -s /lib/i386-linux-gnu/libc.so.6 /lib/libc.so.6


よい試み。残念ながら、/lib64/x86_64-linux-gnu/ディレクトリがありません(Ubuntuも使用していません)。
LonelyWebCrawler 14

0

ルートシェルでこれを試してください:

ln -s /lib/x86_64-linux-gnu/libc-2.13.so /lib64/libc.so.6

libc-2.13.soシステムに適切なバージョンでない場合は、bashのタブ補完を使用して適切なバージョンを見つけます。

これが機能しない場合は、ルートシェルで静的にリンクされたバージョンのldconfigを使用できます

/sbin/ldconfig

libcリンクのターゲットライブラリが削除された場合は、[ パッケージ:libc6]ページからdebianパッケージをダウンロードし、dpkg-deb -Xmanページ)を使用して展開し、にコピーlibc-2.13.so/lib/x86_64-linux-gnuます。次に、ldconfigを実行して、すべてのリンクが正しいことを確認します。


libc.so.6同様のリンクを作成して削除したので、少し懐疑的であればすみません。libc-2.13(私の場合)とlibc.so.6は同一ですか?削除した場所libc.so.6/lib64/はなく、に配置する必要があるのはなぜ/lib/x86_64-linux-gnu/ですか?
LonelyWebCrawler 14

これらすべてのリンクのソースであるライブラリを削除していない場合は、すべてのリンクを再確立するldconfigを試してみる価値があります。-v詳細については、verboseパラメーターを使用できます。
harrymc 14

残念ながら、私はライブラリを削除しました。それは複雑です。
LonelyWebCrawler 14

この場合のアドバイスを追加しました。
ハリーマック14

ごめんなさい、私はあなたを誤解しました。まだありますlibc-2.13.so(そうではありません2.19)。上記のリンクを試してみます。
LonelyWebCrawler 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.