在Alpine系统上安装Go 1.20时,报错“Error loading shared library libresolv.so.2”


在Alpine系统上安装Go 1.20时,安装完成后使用go version检查go版本报错:

/ # go version
sh: go: not found

使用在go安装目录使用ldd命令查看所依赖的共享库列表

/usr/local/go/bin # ldd go
    /lib64/ld-linux-x86-64.so.2 (0x7f150b281000)
Error loading shared library libresolv.so.2: No such file or directory (needed by go)
    libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x7f150b281000)
    libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f150b281000)

可以看到详细的错误为“Error loading shared library libresolv.so.2: No such file or directory (needed by go)”,这个错误是因为您在Alpine系统上安装Go 1.20时,Go编译器试图加载一个不存在的库libresolv.so.2,这个库是系统C库的一部分。Alpine系统使用了一个不同的C库(musl libc),它更小,但是也可能会遇到一些兼容性问题。有两种可能的解决方法:

  • 可以尝试在Alpine系统上安装一个虚拟的libresolv.so.2库,或者将libc.so.6链接到这个名字,这样Go编译器就不会报错了。
  • 可以尝试切换到一个基于Debian或Ubuntu的系统,它们使用了更标准的GNU libc库

解决

在Alpine系统上,打开一个终端窗口,输入

apk add musl-dev

这样可以安装musl libc的开发包,其中包含了libc.so文件。然后,输入

ln -s /usr/lib/libc.so /usr/lib/libresolv.so.2

这样可以创建一个指向libc.so的符号链接,命名为libresolv.so.2。

最后,重新尝试安装Go 1.20

声明:初心|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 在Alpine系统上安装Go 1.20时,报错“Error loading shared library libresolv.so.2”


愿你勿忘初心,并从一而终