- "no such package", "ERROR: unable to select packages:", required by: world[xar]
- "ERROR: unable to select packages:", "so:libcrypto.so.3 (no such package):"
adoptopenjdk 사용 |
FROM adoptopenjdk/openjdk11:jdk-11.0.10_9-alpine RUN apk upgrade && apk update RUN apk add libzip curl unzip RUN rm -rf /var/cache/apk/* |
openjdk 와 alpine OS 를 같이 사용하는 위의 설정들을 많이 사용할 것이다.
그런데, xar (xar archive 관련) 명령어를 사용할 필요가 생겨서 패키지를 추가했더니 패키지를 못찾는 문제가 발생했다.
adoptopenjdk 사용 |
FROM adoptopenjdk/openjdk11:jdk-11.0.10_9-alpine RUN apk upgrade && apk update RUN apk add libzip curl unzip xar RUN rm -rf /var/cache/apk/* |
Alpine 패키지에서 xar 를 검색해보니 분명히 검색이 되어서 지원하는게 맞다고 같아서 혹시 Repository(community) 를 바꿔서 하면 되지 않을까 싶어서 경로를 지정해보았다.
adoptopenjdk 사용 |
FROM adoptopenjdk/openjdk11:jdk-11.0.10_9-alpine RUN apk upgrade && apk update RUN apk add libzip curl unzip RUN apk --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community xar RUN rm -rf /var/cache/apk/* |
docker 빌드를 다시 시도해보았더니 패키지 못찾는다는 에러는 지나가는 듯한데.
이번에는 설치에 필요한 라이브러리(libcrypto.so.3) 가 없어서 실패한다. 설마 했는데 사용중인 Alpine 환경에서 libcrypto.so 의 버전이 1 이었다.
xar, libcrypto 패키지를 같이 해결하기 위해서 다른 방법을 찾아야 할거 같다.
Alpine 패키지에서 브랜치 버전을 edge 에서 3.16 으로 낮춰보니 검색이 안된다. 3.17 부터 xar 패키지가 추가된 듯하다.
AdoptOpenJDK 에 포함된 alpine 버전이 문제가 있는거 같아서 혹시나 AdoptOpenJDK 사이트를 확인해보니, 2021년 8월 25일부터 업데이트가 중단되어 마지막 포함된 Alpine 버전이 3.14 였다.
Alpine 최신 버전이 3.20 이 넘어가고 있는데, 더이상 AdoptOpenJDK 는 사용하면 안될듯 하다.
그래서 다음과 같이 최신 apine 버전을 사용하도록 바꾸고 openjdk11 만 추가해서 테스트해보니 정상적으로 이미지가 생성된다.
Alpine 최신 사용 |
from alpine:latest RUN sed 's/https/http/g' -i /etc/apk/repositories RUN apk upgrade && apk update run apk --no-cache add openjdk11 |
물론 xar 패키지도 정상적으로 설치된다.
※ 특이한거는 Alpine 이미지를 사용해서 생성한 도커 이미지 파일 사이즈가 도커 데스크탑에서 확인해보면 AdoptOpenJDK 보다 더 작더라. (물론 slim 을 사용안해서 일 수 도 있지만)
- "SSL routines:tls_post_process_server_certificate:certificate verify failed:ssl/statem/statem_clnt.c:2091:"
apk update 또는 add 를 사용하면 https://dl-cdn.alpinelinux.org/alpine/ 를 연결하려고 할때 ssl 오류가 발생한다.
Alpine 최신 사용 |
from alpine:latest RUN apk upgrade && apk update run apk --no-cache add openjdk11 |
해결 방법을 찾아보니, ssl 인증서를 특정 url 로 지정을 하거나 apk 명령어에 "--no-check-certificate" 옵션을 붙이면 된다고 한다.
또 다른 방법으로는 "--no-check-certificate" 옵션말고 repository 접속하는 주소의 모든 https 를 http 로 변경하는 것이다.
Alpine 최신 사용 |
from alpine:latest RUN sed 's/https/http/g' -i /etc/apk/repositories RUN apk upgrade && apk update run apk --no-cache add openjdk11 run apk --no-cache add xar |
참고
'Engineering > Docker' 카테고리의 다른 글
docker build 중 "ERROR: failed to solve: error from sender: context canceled" 오류 해결 (0) | 2024.03.26 |
---|---|
docker 명령어 간단 정리 (0) | 2023.11.16 |
도커 데스크탑 데이터 삭제 (0) | 2023.08.18 |
flutter Android toolchain 문제 해결 (1) | 2023.06.18 |
도커 데스크탑 디렉토리 이동 (1) | 2023.03.24 |