web-dev-qa-db-ja.com

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

最近誤ってファイルを削除しました/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
3

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

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

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

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

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

4
Sami Laine

libc.so.6ファイルはlibc6パッケージに含まれています。

マシンにlibc6パッケージがインストールされているリポジトリを確認する必要があります。 (/etc/apt/sources.listなどを確認してください)。

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

1

端末を開き(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

0
Jollyfreak

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

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を実行して、すべてのリンクが正しいことを確認します。

0
harrymc