如何恢复libz.so.1?
在尝试修复Python的问题时,我意外地通过对它进行符号链接来消除我的libz.so.1
二进制文件。 现在一堆东西,包括apt-get
将无法正常工作。 损坏仅限于libz.so.1(指向libz.so.1.2.8
)所以我应该能够通过找到x86_64二进制文件并将其放回原位来修复它,但我能找到的只是是源代码,我无法编译。 我在使用Xenial。 在哪里可以找到编译的二进制文件?
解决此问题的正确方法是手动下载所需的包,然后安装或提取到系统。 当然,您可以从LiveCD / LiveUSB执行此类操作。
如何解决这样的问题:
- 访问packages.ubuntu.com 。
-
在搜索包的内容 (在我们的例子中是
libz.so.1.2.8
)中输入错过的文件名,指定目标分布 (在我们的例子中为xenial
)和CPU 架构 (amd64
): -
点击搜索 ,它会显示结果页面 :
-
然后单击
zlib1g
链接 -
在下载部分中单击
amd64
:wget http://mirrors.kernel.org/ubuntu/pool/main/z/zlib/zlib1g_1.2.8.dfsg-2ubuntu4_amd64.deb
-
尝试将下载的软件包安装到系统中:
sudo dpkg -i zlib1g_1.2.8.dfsg-2ubuntu4_amd64.deb
如果它不起作用 – 直接将其解压缩到文件系统:
sudo dpkg -x zlib1g_1.2.8.dfsg-2ubuntu4_amd64.deb /
-
然后确保用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中,再次重新启动到工作系统。
好吧,因为我把原始文件吹走了,我无法使用甚至解压缩或使用rpm
或alien
。 我能够找到RPM版本,但我无法获得二进制文件,因为没有任何依赖压缩的工具工作。 所以我将RPM上传到Convertio并将其转换为tar,下载并解压缩并将其放回到它所属的位置。
Sheesh,经验教训,小心那些共享库!