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