无法解释为什么 Alpine apk upgrade 命令不更新 ncurses 包,尽管存在更新版本
Cannot explain why Alpine apk upgrade command does not update ncurses package although a newer version exists
我有一个 Dockerfile 作为:
FROM nginx:1.21.3-alpine
RUN apk update && apk add bash \
&& apk upgrade
我可以看到软件包 ncurses
已安装,版本为 6.2_p20210612-r0
。
现在,main
存储库 edge
分支中有一个更新的软件包,版本为 6.2_p20211002-r0
here.
据我所知,在从上述 Dockerfile 构建镜像后,ncurses
的版本应该更新为 6.2_p20211002-r0
,但它仍保持为 6.2_p20210612-r0
。我不明白为什么?
我在构建后通过 运行 一个容器确认了这一点 运行:
apk info -a ncurses
输出为:
ncurses-6.2_p20210612-r0 installed size:
284 KiB
nginx:1.21.3-alpine
图像基于 Alpine 3.14(参见 cat /etc/os-release
),因此 ncurses 使用 Alpine 3.14 存储库的版本更新,目前为 6.2_p20210612-r0
。
要从边缘(当前版本 6.2_p20211002-r0
)安装 ncurses
,您可以在 apk
命令中明确指定边缘存储库:
apk add ncurses --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main
在某些情况下,以这种方式混合和匹配来自不同存储库的包可能没问题,但必须仔细测试。对于 ncurses
,一些功能可能会被破坏,因为匹配的 ncurses-libs
包也应该被安装,但是一些包图像依赖于 ncurses-libs
,所以重新安装它会触发更新这些包。此外,nginx-module-njs
依赖包必须被删除。如果这是可以接受的,您可以按如下方式修改 Dockerfile:
FROM nginx:1.21.3-alpine
RUN apk update && \
apk del ncurses ncurses-libs nginx-module-njs && \
apk add ncurses ncurses-libs --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main && \
apk add bash && \
apk upgrade
我有一个 Dockerfile 作为:
FROM nginx:1.21.3-alpine
RUN apk update && apk add bash \
&& apk upgrade
我可以看到软件包 ncurses
已安装,版本为 6.2_p20210612-r0
。
现在,main
存储库 edge
分支中有一个更新的软件包,版本为 6.2_p20211002-r0
here.
据我所知,在从上述 Dockerfile 构建镜像后,ncurses
的版本应该更新为 6.2_p20211002-r0
,但它仍保持为 6.2_p20210612-r0
。我不明白为什么?
我在构建后通过 运行 一个容器确认了这一点 运行:
apk info -a ncurses
输出为:
ncurses-6.2_p20210612-r0 installed size:
284 KiB
nginx:1.21.3-alpine
图像基于 Alpine 3.14(参见 cat /etc/os-release
),因此 ncurses 使用 Alpine 3.14 存储库的版本更新,目前为 6.2_p20210612-r0
。
要从边缘(当前版本 6.2_p20211002-r0
)安装 ncurses
,您可以在 apk
命令中明确指定边缘存储库:
apk add ncurses --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main
在某些情况下,以这种方式混合和匹配来自不同存储库的包可能没问题,但必须仔细测试。对于 ncurses
,一些功能可能会被破坏,因为匹配的 ncurses-libs
包也应该被安装,但是一些包图像依赖于 ncurses-libs
,所以重新安装它会触发更新这些包。此外,nginx-module-njs
依赖包必须被删除。如果这是可以接受的,您可以按如下方式修改 Dockerfile:
FROM nginx:1.21.3-alpine
RUN apk update && \
apk del ncurses ncurses-libs nginx-module-njs && \
apk add ncurses ncurses-libs --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main && \
apk add bash && \
apk upgrade