介绍
小白有个服务器已经升级到Debian12了,但是小鸡上跑着老版本的nginx,启动时报错:
error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
原因
Debian 12 默认不再提供 OpenSSL 1.1,服务依赖的 libssl.so.1.1 动态库文件 不存在或未安装。这是 OpenSSL 1.1 版本的动态链接库文件,常见于较老的软件,但在较新的 Linux 发行版中已经被 OpenSSL 3.x 替代,导致依赖 OpenSSL 1.1 的程序找不到库文件而无法启动。
解决方案
方法一:使用 Debian 官方兼容库(推荐)
你可以从 Debian 的 旧版本兼容库 安装 libssl1.1:
# 对于 amd64 架构用户(大部分人是这个)
wget https://snapshot.debian.org/archive/debian-security/20220717T121652Z/pool/updates/main/o/openssl/libssl1.1_1.1.1n-0+deb11u3_amd64.deb
sudo apt install ./libssl1.1_1.1.1n-0+deb11u3_amd64.deb
方法二:添加旧版 Debian 11 仓库(不推荐长期使用)
临时添加 Debian 11 源:
echo "deb http://deb.debian.org/debian bullseye main" | sudo tee /etc/apt/sources.list.d/bullseye.list
更新索引并只安装所需依赖:
sudo apt update
sudo apt install libssl1.1
安装后删除源,防止不小心降级系统组件:
sudo rm /etc/apt/sources.list.d/bullseye.list
sudo apt update
检查是否成功:
ldconfig -p | grep libssl.so.1.1
输出类似:
libssl.so.1.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libssl.so.1.1