web-dev-qa-db-ja.com

libz.so.1を復元するにはどうすればよいですか?

Pythonの問題を修正しようとしているときに、シンボリックリンクでlibz.so.1バイナリを誤って吹き飛ばしてしまいました。現在、apt-getを含む多くのものは機能しません。損傷はlibz.so.1(libz.so.1.2.8を指していた)に限定されるため、x86_64バイナリを見つけて元の場所にドロップすることで修正できますが、見つけることができるのはソースと私はそれをコンパイルすることはできません。私はXenialにいます。コンパイルされたバイナリはどこにありますか?

4
bdetweiler

この問題を修正する正しい方法は、必要なパッケージを手動でダウンロードしてから、システムにインストールまたは抽出することです。もちろん、LiveCD/LiveUSBからこのようなアクションを実行できます。

そのような問題を解決する方法:

  1. packages.ubuntu.com にアクセスしてください。
  2. 逃したファイル名をに入力しますパッケージの内容を検索(この場合はlibz.so.1.2.8)ターゲットDistribution(この場合はxenial)とCPUを指定します- アーキテクチャAMD64):

    search options

  3. 検索をクリックすると、 結果ページ が表示されます。

    search results

  4. 次に、 zlib1gリンク をクリックします

  5. DownloadセクションでAMD64をクリックします:

    download <code>zlib1g</code>

  6. 開いたページで最も近いミラーを選択します(リンクをコピーするか、ブラウザでデバッグファイルをダウンロードします)

    mirror

    wget http://mirrors.kernel.org/ubuntu/pool/main/z/zlib/zlib1g_1.2.8.dfsg-2ubuntu4_AMD64.deb
    
  7. ダウンロードしたパッケージをシステムにインストールしてみてください。

    Sudo dpkg -i zlib1g_1.2.8.dfsg-2ubuntu4_AMD64.deb
    

    動作しない場合-ファイルシステムに直接抽出します:

    Sudo dpkg -x zlib1g_1.2.8.dfsg-2ubuntu4_AMD64.deb /
    
  8. そして、APTで確実に再インストールします。

    Sudo apt-get install --reinstall zlib1g
    
7
N0rbert

N0rbertの指示 の拡張、ライブセッションでこれを行う場合、壊れたUbuntuインストールのルートにパッケージを抽出していることを確認してください、ライブセッション自体のルートとは対照的に(これは何も解決せず、再起動すると消えます)。

ライブセッションのPOVから、壊れたインストールは/media/ubuntu/ae7r0-9s90s-ejf8d-d9d9f(実際の値ではなく、それに似た長いハッシュ)のような場所にマウントされます。フォルダを表示するには、エクスプローラでファイルを参照する必要がある場合があります。

したがって、ライブセッションでは、次のようなコマンドを使用して抽出します。

Sudo dpkg -x zlib1g_1.2.8.dfsg-2ubuntu4_AMD64.deb /media/ubuntu/ae7r0-9s90s-ejf8d-d9d9f/

不足しているlibz.so.1/media/ubuntu/ae7r0-9s90s-ejf8d-d9d9f/lib/x86_64-linux-gnu/に復元されると、再起動し、tty1でSudo apt-get install --reinstall zlib1gを実行し、動作中のシステムを再起動できるはずです。

2
SlugFrisco