저는 지정된 안정적인 Alpine 릴리스 내에서 개별 패키지 버전을 보존/업그레이드하기 위해 Alpine Linux에서 문서화된 방법을 찾고 있습니다.
따라서 이미지(예: docker)를 구축한다고 가정하면 다음과 같이 시작합니다.
FROM alpine:3.13.1
RUN apk add python3 py3-numpy
그 다음에...
- 이것이 항상 python3 및 numpy의 동일한 주/부 버전을 설치한다고 가정하는 것이 안전합니까?
- 보안 패치가 제공되나요?(이미지를 재구성하는 경우)
3.13
(#1과 #2) 대신에 그냥 수정이라고 말하면3.13.1
차이점이 무엇인가요 ?
답변1
나는 이것을 설명하는 명확한 문서를 모른다는 사실 외에는안정적인 릴리스에서는 버그만 수정합니다.:
안정 릴리스는 이름에서 알 수 있듯이 처음에는 패키지 아카이브의 특정 시점 스냅샷이지만 이후에는 안정적인 환경을 유지하기 위해 버그 수정으로만 유지됩니다.
그러나 일부 실험에서는 설치가 기반으로 하는 패치 버전에 고정되지 않은 것으로 나타났습니다.
$ docker run -it --rm alpine:3.13.0
/ # apk add php8
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz
(1/9) Installing php8-common (8.0.2-r0)
(2/9) Installing argon2-libs (20190702-r1)
(3/9) Installing ncurses-terminfo-base (6.2_p20210109-r0)
(4/9) Installing ncurses-libs (6.2_p20210109-r0)
(5/9) Installing libedit (20191231.3.1-r1)
(6/9) Installing pcre2 (10.36-r0)
(7/9) Installing xz-libs (5.2.5-r0)
(8/9) Installing libxml2 (2.9.10-r6)
(9/9) Installing php8 (8.0.2-r0)
Executing busybox-1.32.1-r0.trigger
OK: 13 MiB in 23 packages
/ #
— 색인은 "v3.13"이며 설치 후 php8
다음과 같이 나열된 8.0.2를 얻습니다.3.13.2.
추가 실험에서는 다음과 같은 결과가 나타났습니다.
- 기본 이미지 로 사용하면
alpine:3.13
최신 패치 버전이 생성됩니다. - 기본 이미지 로 사용하면
alpine:3.13.x
이미지의 일부인 패키지(musl
,zlib
등 )에 대해apk-toole
특정 패치 버전이 릴리스 되지만 무엇이든 설치하면 일반 릴리스에서 사용 가능한 최신 버전이 설치됩니다. apk upgrade --available
그럼에도 불구하고 핵심 패키지에 대한 수정 사항을 찾았는지 확인 해야 합니다 .
따라서 이미지를 다시 빌드하면 항상 동일한 패키지 및 버전 세트가 생성되도록 보장할 수 있는 방법이 없는 것 같습니다.
일관된 패키지 및 버전 세트를 유지하려면 고유한 이미지를 구축하고 태그를 지정할 수 있습니다(단, 보안 수정은 생략).
답변2
알파인 사용자 메일링 리스트에 비슷한 질문을 해서 답변을 받았습니다.나타나엘 코파의 답장:
...전단
예. 보안 업데이트를 제공하고 있습니다.
패키지의 새 버전이 출시됩니까?
종류에 따라 다릅니다. 업데이트로 인해 문제가 발생할 가능성이 없으면 패키지를 새 버전으로 업데이트할 수 있습니다. 패치를 통해 보안 수정 사항을 백포트할 수 있습니다.
목표는 안정적인 브랜치를 사용할 수 있어야 하고
apk upgrade
보안 업데이트를 받는 것을 두려워하지 않는 것입니다.따라서 알파인 3.12부터 시작하면apk에 python3 py3-numpy 추가, (보안 수정에도 불구하고) 항상 동일한 버전의 *numpy를 얻을 것이라고 가정해도 안전합니까?
이 단계에서 Alpine 3.12는 보안 업데이트만 받게 됩니다. 따라서 보안 문제(또는 보고된 기타 주요 버그)가 없는 한 항상 동일한 버전을 받게 됩니다.
보안 수정 사항 외에도 Alpine 3.13에는 버그 수정이 있을 수 있지만 새 버전은 3.13에 자동으로 추가되지 않습니다.
두 경우 모두
apk add python3 py3-numpy
문제 없이 APK를 업그레이드할 수 있고 안전해야 합니다. 주요 API 또는 ABI 변경 사항을 안정 브랜치에 푸시해서는 안 됩니다. (일부 예외 있음)
현재로서는 3.13이 최신입니다.