在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
Comments | NOTHING