alpine镜像go新版本1.21出现libresolv.so.2: No such file or directory和__res_search: symbol not found

环境描述:

alpine 3.18

问题描述:

alpine镜像go新版本1.21出现libresolv.so.2: No such file or directory和__res_search: symbol not found_第1张图片

alpine镜像无改动情况下,从go1.19升级至1.21后出现so库找不到

相关问题Issue:

Error loading shared library libresolv.so.2 on Alpine in Go 1.20 · Issue #59305 · golang/go · GitHub

解决问题:

alpine镜像go新版本1.21出现libresolv.so.2: No such file or directory和__res_search: symbol not found_第2张图片

方法1:手动下载最新版的gcompat进行安装
wget https://mirrors.ustc.edu.cn/alpine/v3.19/main/x86_64/gcompat-1.1.0-r4.apk
apk add gcompat-1.1.0-r4.apk
方法2:使用最新的alpine:3.19镜像(截止至发帖日,hubdocker内还未更新3.19镜像)
docker pull alpine:3.19
# alpine容器内执行安装gcompat
apk add gcompat
方法3:使用alpine的alpha版本镜像
docker pull alpine:edge
#或
docker pull alpine:20230901

# 容器内执行安装gcompat
apk add gcompat
方法4:将apk源改为3.19版本
sed -i 's#v3.18#v3.19#g' /etc/apk/repositories
apk add gcompat

其他问题:

alpine镜像go新版本1.21出现libresolv.so.2: No such file or directory和__res_search: symbol not found_第3张图片

alpine 3.18的gcompat 已可解决libresolv.so.2: No such file or directory的问题

但会出现__res_search: symbol not found

原因3.18版本的gcompat是libresolv.so.2 软链到ld-linux-x86-64.so.2


新版本gcompat会将libresolv.so.2软链到libgcompat.so.0

在alpine 3.18中,安装gcompat后手动软链也可避免__res_search: symbol not found问题

alpine镜像go新版本1.21出现libresolv.so.2: No such file or directory和__res_search: symbol not found_第4张图片

其他文档:

gcompat仓库:Files · current · Adélie Linux / gcompat · GitLab

Networking Library Functions: res_search - man pages section 3: Networking Library Functions

alpine packages:

https://pkgs.alpinelinux.org/packages?name=gcompat&branch=edge&repo=&arch=&maintainer=

Alpine Linux packages

Alpine Linux packages

你可能感兴趣的:(golang,alpine)