Ubuntu - 意外删除了 /usr/bin 中的 openssl。如何恢复?

Ubuntu - 意外删除了 /usr/bin 中的 openssl。如何恢复?

我想删除指向 openssl 的符号链接,但是我不小心rm openssl在 /usr/bin 中执行了该操作,而不是在符号链接的目录中执行了该操作。

我该如何恢复以使 openssl 再次处于活动状态?我尝试了 sudo apt-get update 和 upgrade,但没有用。

现在我将 openssl 从符号链接目录复制到/usr/bin,但肯定有一些更简单的方法来做到这一点。

谢谢您的帮助。

答案1

sudo apt-get update并且sudo apt-get upgrade不起作用,因为 apt 不知道文件丢失,它只知道包已安装。

一般来说,有一些恢复文件的选项:

  • 从备份中恢复文件
  • 从相同的系统(相同版本和架构)复制文件
  • 使用以下命令重新安装包sudo apt-get install --reinstall <package>

OpenSSL 很可能是 apt 运行所必需的,因此最后一点可能会失败,目前无法测试。如果是这种情况,仍然可以从镜像中下载 OpenSSL .deb 文件(或者您甚至可能在 apt 缓存中的本地磁盘上拥有它)并通过 进行安装dpkg -i <.deb-file>

适用于您的 Ubuntu 版本的修复 heartbleed 漏洞的官方 .deb 软件包可在此处获取:

https://launchpad.net/~ubuntu-security/+archive/ubuntu/ppa/+build/5887002

但通常情况下,您应该通过正常更新获取此软件包。如果没有,则可能是您使用的镜像已过时。如果您使用本地镜像,请将其更改为官方镜像之一(如这里所述)。

在您的情况下,由于 openssl 是自编译的,我只需重新编译并重新安装它。

答案2

如果有人在 RHEL 或 CENTOS 上遇到此问题,并且无法访问相应的存储库。我最终不得不找到我安装了哪个包。

> rpm -qa | grep openssl
openssl-devel-1.0.1e-42.el7.9.x86_64
openssl-1.0.1e-42.el7.9.x86_64

从互联网上下载正确的 RPM,然后使用 RPM 进行修复

> rpm --replacefiles --replacepkgs openssl-1.0.1e-42.el7.9.x86_64

我知道这已经过时了,而且与原帖者的问题没有直接关系。但在搜索这个问题时,这是第一个出现的答案。我希望这可以为下一个偶然发现这个问题的人节省几分钟。

相关内容