如何恢复libz.so.1?

在尝试修复Python的问题时,我意外地通过对它进行符号链接来消除我的libz.so.1二进制文件。 现在一堆东西,包括apt-get将无法正常工作。 损坏仅限于libz.so.1(指向libz.so.1.2.8 )所以我应该能够通过找到x86_64二进制文件并将其放回原位来修复它,但我能找到的只是是源代码,我无法编译。 我在使用Xenial。 在哪里可以找到编译的二进制文件?

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

如何解决这样的问题:

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

    搜索选项

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

    搜索结果

  4. 然后单击zlib1g链接

  5. 下载部分中单击amd64

    下载<code/> zlib1g </ code>“> </p>
</li>
<li>
<p> 在打开的页面上选择最近的镜像,(通过浏览器复制链接或下载deb文件) </p>
<p> <img src=

     wget http://mirrors.kernel.org/ubuntu/pool/main/z/zlib/zlib1g_1.2.8.dfsg-2ubuntu4_amd64.deb 
  6. 尝试将下载的软件包安装到系统中:

     sudo dpkg -i zlib1g_1.2.8.dfsg-2ubuntu4_amd64.deb 

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

     sudo dpkg -x zlib1g_1.2.8.dfsg-2ubuntu4_amd64.deb / 
  7. 然后确保用APT重新安装它:

     sudo apt-get install --reinstall zlib1g 

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/ ,你应该可以重启,运行sudo apt-get install --reinstall zlib1g在tty1中,再次重新启动到工作系统。

好吧,因为我把原始文件吹走了,我无法使用甚至解压缩或使用rpmalien 。 我能够找到RPM版本,但我无法获得二进制文件,因为没有任何依赖压缩的工具工作。 所以我将RPM上传到Convertio并将其转换为tar,下载并解压缩并将其放回到它所属的位置。

Sheesh,经验教训,小心那些共享库!