如何修复丢失的 libcrypto.so.1.1?

如何修复丢失的 libcrypto.so.1.1?

当我尝试在我的系统上运行nodejs时,我第一次遇到这个问题。我收到此错误消息:

node: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory

我在尝试运行VirtualBox时也遇到过;它给了我这样的信息:“我们无法启动,因为我们没有 libcrypto.so.1.1”

我使用 Arch 作为我的操作系统,但我发现的一切都是针对 Ubuntu 的。

答案1

我也在 arch 上遇到了这个。我的解决方案是还安装openssl-1.1其中提供了libcrypto.so.1.1.

升级也可能pacman对您造成影响;如果是这样,您将必须从镜像下载该软件包并手动将libcrypto.so.1.1libssl.so.1.1放入/usr/lib/.然后,你可以运行

pacman -U --overwrite '/usr/lib/*' openssl-1.1-1.1.1.s-2-x86_64.pkg.tar.zst

安装完整的软件包。

请注意,sudo如果是的话,也可能会被破坏pacman,因此,如果您没有 root 密码来登录,su则可能需要从安装磁盘进行恢复。

答案2

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 476.9G  0 disk
├─sda1   8:1    0   512M  0 part
├─sda2   8:2    0     1G  0 part
├─sda3   8:3    0  29.3G  0 part
├─sda4   8:4    0  75.1G  0 part 
└─sda5   8:5    0   371G  0 part
sdb      8:16   0 596.2G  0 disk
├─sdb1   8:17   0 146.6G  0 part
├─sdb2   8:18   0     1K  0 part
├─sdb5   8:21   0 248.9G  0 part
└─sdb6   8:22   0 200.7G  0 part
sdc      8:32   1  28.7G  0 disk
├─sdc1   8:33   1  28.6G  0 part
└─sdc2   8:34   1    32M  0 part

对于那些kernel panic无法使用终端的人pacman

  • 使用 Live CD/USB 并启动它
  • 运行lsblk命令并安装//boot正如我所解释的(见图)
  • 在这种情况下,我知道我的/情况sda3,我的boot情况sda1如此
  • 运行mount /dev/sda3 /mntmount /dev/sda1 /mnt/boot/efi
  • 然后执行arch-chroot /mnt并运行pacman -Syu
  • 如果你遇到错误所以你可以尝试这个命令:pacman --root /mnt --cachedir /mnt/var/cache/pacman/pkg --config /mnt/etc/pacman.conf -Syu

谢谢理查德和其他人来自Arch 电报群

答案3

我犯了中断升级的错误,并遇到了该库丢失的问题。我必须下载 pacman-static,这样我才能升级软件包,因为 pacman 想要旧版本的 libcrypto,但 openssl 已经升级到版本 3。我也遇到了关键问题,所以我最终安装了 openssl-1.1 来修复 libcrypto 错误和 archlinux-keyring 来修复关键问题。之后,我使用 yay 从 Arch 用户存储库安装 pacman-static,这样我就可以确保我拥有最新版本而不是其他人的副本。

答案4

我不明白所有其他答案都想表达什么。

在我的 RHEL 7.9 上我有这个

ls -l /lib/libcrypto*

lrwxrwxrwx. 1 root root      19 Apr 19  2022 libcrypto.so -> libcrypto.so.1.0.2k
-rwxr-xr-x. 1 root root 1440264 Mar  4  2016 libcrypto.so.0.9.8e
lrwxrwxrwx. 1 root root      19 Apr 19  2022 libcrypto.so.10 -> libcrypto.so.1.0                                             .2k
-rwxr-xr-x. 1 root root 2520920 Mar 23  2022 libcrypto.so.1.0.2k
lrwxrwxrwx. 1 root root      19 Jun 11  2021 libcrypto.so.6 -> libcrypto.so.0.9.8e

当您看到诸如此类的错误error while loading shared libraries: libcrypto.so.1.1,并且您安装了该库,但特定文件(或链接).so.1.1不存在,但您注意到像我上面显示的其他数字,那么您可以像这样创建一个链接...

在你的情况下,手头的库是libcrypto.so,正如你所看到的,我有一个指向适当版本的 .so 文件的链接,该链接基于我安装的提供该 rpm 的任何 OpenSSL 版本。随着时间的推移而更新,libcrypto.so指向的内容也会相应改变。

但你想要做的是创建一个libcrypto.so.1.1链接并将其指向libcrypto.so

您可以通过在 .so 文件所在的文件夹中运行此命令来完成此操作

ln -s libcrypto.so libcrypto.so.1.1

这样,无论您使用的任何软件都经过专门编码(在我看来是错误的)来引用特定的 .so 版本(在您的情况下为 .so.1.1),您都会让它快乐并能够运行。当较新版本的 OpenSSL(或其他版本)无法与您正在使用的任何代码一起工作时,您会发现否则这在 99% 的情况下都有效,并且会让您过去未找到共享库错误。

相关内容