如何恢复 libz.so.1?

bde*_*ler 6 apt shared-library 16.04

在尝试解决 Python 问题时,我不小心libz.so.1通过符号链接将我的二进制文件炸掉了。现在一堆东西,包括apt-get不起作用。损坏仅限于 libz.so.1(指向libz.so.1.2.8),所以我应该能够通过找到 x86_64 二进制文件并将其放回原位来修复它,但我能找到的只是源,我可以' t得到编译。我在 Xenial 上。我在哪里可以找到编译好的二进制文件?

N0r*_*ert 8

解决此问题的正确方法是手动下载所需的软件包,然后将其安装或解压缩到系统中。当然,您可以从 LiveCD/LiveUSB 执行此类操作。

如何解决此类问题:

  1. 访问packages.ubuntu.com
  2. 搜索包的内容(在我们的例子中libz.so.1.2.8)中输入丢失的文件名,指定目标分布xenial在我们的例子中)和 CPU架构amd64):

    搜索选项

  3. 点击搜索,会显示结果页面

    搜索结果

  4. 然后点击zlib1g链接

  5. 下载部分点击amd64

    下载 <code>zlib1g</code>

  6. 在打开的页面上选择最近的镜像,(复制链接或通过浏览器下载 deb 文件)

    镜子

    wget http://mirrors.kernel.org/ubuntu/pool/main/z/zlib/zlib1g_1.2.8.dfsg-2ubuntu4_amd64.deb
    
    Run Code Online (Sandbox Code Playgroud)
  7. 尝试将下载的软件包安装到系统中:

    sudo dpkg -i zlib1g_1.2.8.dfsg-2ubuntu4_amd64.deb
    
    Run Code Online (Sandbox Code Playgroud)

    如果它不起作用 - 将其直接解压缩到文件系统:

    sudo dpkg -x zlib1g_1.2.8.dfsg-2ubuntu4_amd64.deb /
    
    Run Code Online (Sandbox Code Playgroud)
  8. 然后肯定会用 APT 重新安装它:

    sudo apt-get install --reinstall zlib1g
    
    Run Code Online (Sandbox Code Playgroud)

  • 很容易获得`dpkg` 需要的库列表:`ldd /usr/bin/dpkg`。确实`libz`不在其中,但有一些。 (2认同)