Go언어

[Go언어] 알파인리눅스(Alpine Linux)에서 Go 1.20이상 실행하기 (__res_search: symbol not found, libresolv.so.2)

아무일도없었다 2023. 10. 23. 11:47

[개발 환경]

  • Kubernetes
  • Alpine Linux (3.16)
  • Go (1.19 → 1.20)

 


 

go언어로 프로젝트를 진행하던 도중 go 버전을 1.19에서 1.20으로 올린 뒤 빌드를 진행하였다.

 

그리고 발생한 에러

 

Error loading shared library libresolv.so.2: No such file or directory (needed by /my_project)
Error relocating /my_project: __res_search: symbol not found

 

__res_search 심볼을 찾지 못한다는 에러인데 구글링을 열심히 해보니 경량 OS 이미지인 알파인(Alpine) 리눅스에서 해당 라이브러리가 없다는 사실을 알아냈다.

 

그럼 어떻게 해결하는지 확인했는데 생각보다 단순하게 해결이 가능했다.

 

이번 이슈는 DockerFile에 아래 내용을 추가해서 해결하였다.

 

RUN apk --no-cache add gcompat && rm -rf /var/cache/apk/*

RUN ln -sfv /lib/ld-linux-x86-64.so.2 /lib/libresolv.so.2

 

 

[참고]

https://github.com/kubernetes/minikube/issues/16228

https://git.adelielinux.org/adelie/gcompat

 

반응형