我无法 apt-get,我删除了 libssl.so.10
包括 wget 在内的大多数命令都给我一些 libssl.so.10 结尾的内容:无法打开共享对象文件:没有此文件或目录
有没有一种可靠的方法可以在我仍有活动连接的情况下备份我的所有数据?
答案1
您是否真的删除了真正的 .so 文件或仅删除了指向真正的 .so 文件的软链接,因此库创建者可以动态刷新库并重新编译系统中的所有程序。
如果您只删除了软链接,让我们找到它!
使用
find /usr/lib | grep libssl
找到真正的 .so 文件,如果找到了,请使用以下命令重新创建软链接:
ln /usr/lib/path/to/real/libssl /lib/libssl.so.10
也许程序(现在:apt-get)尝试访问编译到程序中的指定路径中的共享库,使用以下命令找到您的程序:
which apt-get
(我的结果是:/usr/bin/apt-get)
并在程序中找到“潜在”的共享库位置:
strings /path/to/your/program
(我的结果是:
/lib64/ld-linux-x86-64.so.2
libapt-pkg.so.4.12
libutil.so.1
libstdc++.so.6
libm.so.6
libgcc_s.so.1
libc.so.6
__libc_start_main
install - Install new packages (pkg is libc6 not libc6.deb)
)
啊哈它静态使用 /lib64/ld-linux-x86-64.so.2
(看起来我的 apt-get 编译时没有使用 libssl)
我们来尝试一下吧!
答案2
最好的办法是找到libssl.so.10
一台运行与您相同版本的 openssl 的正常工作的计算机(运行相同版本的另一台 centos 机器就足够了),然后使用 USB 记忆棒将文件复制回原位。
答案3
为了修复此问题,您需要替换文件。提到的一种方法是从另一个系统复制库,另一种方法是重新安装提供该库的软件包。
你提到使用apt-get
,所以我假设你正在使用 Ubuntu。第一步是查看该文件需要安装什么包。如果你运行命令`
dpkg -S libssl.so.10
在我的 Ubuntu 12.04.2 系统中,你将获得类似这样的输出
libssl1.0.0: /lib/x86_64-linux-gnu/libssl.so.1.0.0
然后跑步dpkg -l | grep libssl1.0.0
让我
ii libssl1.0.0 1.0.1-4ubuntu5.10 SSL shared libraries
这告诉我们我需要去查找libssl1.0.0
版本1.0.1-4ubuntu5.10
并安装它。可以从以下位置下载软件包
http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssl/
在该列表中搜索我发现我需要libssl1.0.0_1.0.1-4ubuntu5.10_amd64.deb
使用您选择的方法下载文件。
下载文件后,您可以通过发出以下命令重新安装该包
dpkg -i libssl1.0.0_1.0.1-4ubuntu5.10_amd64.deb
幸运的是,您现在将成为全新 libssl 的新主人。
答案4
我以前也遇到过类似的问题。最终的解决方案是在我的笔记本电脑上安装安装了 VirtualBox 的服务器操作系统。我从我的 VirtualBox 客户机中获取文件,并使用 USB 驱动器将它们放在服务器上,正如 @Falcon Momot 提到的那样。这对我来说是个好结果。我最终使用 VirtualBox 来玩弄一些东西,然后再在实际服务器上做这些事情。