You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Alpine Docker加载libssl.so.10失败,求适配Alpine 3.11的对应库版本

问题分析与解决办法

首先明确:Alpine 3.11官方软件源里没有任何openssl/libssl包包含libssl.so.10。原因如下:

  • Alpine Linux默认用LibreSSL替代了OpenSSL,而libssl.so.10是OpenSSL 1.0.x分支专属的共享库版本标识(SONAME)。
  • Alpine 3.11自带的LibreSSL是2.9.x版本,对应的共享库是libssl.so.45,和libssl.so.10二进制不兼容,所以你装了libressl也无法满足依赖。

另外需要注意:Alpine采用musl libc,而很多预编译的Node.js Aerospike客户端是针对glibc系统(如Debian、Ubuntu)编译的,这除了libssl的问题,还可能引发其他依赖兼容问题。

可行的解决办法

1. 换用基于glibc的Node镜像

直接放弃alpine镜像,改用node:14.15.1(默认基于Debian),这类系统自带OpenSSL 1.0.x,libssl.so.10直接可用,无需额外配置。

2. 在Alpine里手动编译OpenSSL 1.0.x

如果必须使用Alpine镜像,可以手动编译OpenSSL 1.0.x来生成libssl.so.10,Dockerfile示例如下:

FROM node:14.15.1-alpine

# 安装编译所需依赖
RUN apk add --no-cache gcc musl-dev make

# 下载并编译OpenSSL 1.0.2u(1.0.x分支最后一个稳定版)
RUN wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2u.tar.gz && \
    tar -xzf openssl-1.0.2u.tar.gz && \
    cd openssl-1.0.2u && \
    ./Configure linux-x86_64 shared --prefix=/usr && \
    make && \
    make install && \
    # 清理编译遗留文件
    cd .. && rm -rf openssl-1.0.2u*

编译完成后,系统中会生成libssl.so.10和libcrypto.so.10,可满足客户端依赖。

3. 从源码编译Aerospike客户端

如果你使用的是Node.js版Aerospike客户端,可强制从源码编译,而非使用预编译二进制包:

npm install aerospike --build-from-source

编译过程会自动适配Alpine的musl libc和LibreSSL环境,不再依赖libssl.so.10。

内容的提问来源于stack exchange,提问作者sharin gan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 14:37:21