当我尝试在我的系统上运行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.1
和libssl.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 /mnt
并mount /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% 的情况下都有效,并且会让您过去未找到共享库错误。