Operating System/Linux

[Alpine] 라이브러리 의존성 설치 에러 조치

근육곰돌이 2021. 12. 22. 12:30
728x90

 

얼마전에 어플리케이션을 가상화하는 작업을 하고 있었습니다.

보통 도커로 많이 사용하니, 그중에 제일 가벼운 alpine-linux로 선택하였습니다.

https://hub.docker.com/_/alpine

 

Alpine - Official Image | Docker Hub

Quick reference Supported tags and respective Dockerfile links Quick reference (cont.) What is Alpine Linux? Alpine Linux is a Linux distribution built around musl libc and BusyBox. The image is only 5 MB in size and has access to a package repository that

hub.docker.com

 

프로젝트는 dotnet 5.0으로 수행하였고, alpine 의존성 버그 잡는 과정을 잠시 메모용으로 포스팅 하려고 합니다.

접힌글은 dotnet build 옵션입니다.

더보기
필자의 dotnet build 옵션입니다. (참고만 해주세요)

 

RUN dotnet publish --runtime alpine-x64 \
--self-contained true /p:PublishTrimmed=true /p:PublishSingleFile=true -c Release -o ./app

 

1. alpine - dotnet selfcontain된 프로젝트가 so search directory로 발생

--> Error
/bin/sh ./app: not found

--> Solution
apk add libc6-compat

 

2. alpine - 의존성 라이브러리 미설치로 인한 오류들 조치

--> Error
Error loading shared library libgcc_s.so.1: No such file or directory

--> Solution
# apk add libgcc




--> Error
Error loading shared library libstdc++.so.6: No such file or directory 

--> Solution
# apk add  libstdc++
(1/1) Installing libstdc++ (10.3.1_git20211027-r0)
OK: 7 MiB in 17 packages



--> Error
Error loading shared library libgssapi_krb5.so.2: No such file or directory (needed by ./app)

--> Solution
 # apk add krb5-libs
(1/5) Installing krb5-conf (1.0-r2)
(2/5) Installing libcom_err (1.46.4-r0)
(3/5) Installing keyutils-libs (1.6.3-r0)
(4/5) Installing libverto (0.3.2-r0)
(5/5) Installing krb5-libs (1.19.2-r4)
OK: 10 MiB in 25 packages


--> Error
Error loading shared library ld-linux-x86-64.so.2: No such file or directory (needed by ./app)

--> Solution
 # apk add gcompat
(1/3) Installing musl-obstack (1.2.2-r0)
(2/3) Installing libucontext (1.1-r0)
(3/3) Installing gcompat (1.0.0-r4)
OK: 8 MiB in 20 packages




--> Error
Process terminated. Couldn't find a valid ICU package installed on the system. Set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support.

--> Solution
# apk add  icu-libs
(1/1) Installing icu-libs (69.1-r1)
OK: 42 MiB in 26 packages

 

 

- 참고

앞서 해결된 패키지 모은 명령어

 apk add icu-libs gcompat krb5-libs libstdc++ libgcc libc6-compat icu-libs

 

 

dotnet-sdk docker는 좋지만, 용량이 너무 커서 필자는 alpine을 선택하였습니다.

(최적화를 좋아해서 그렇습니다. ^^;;)

 

모두들 의존성에서 스트레스 받지 마셔요!!

 

 

 

반응형