Poo*_*rna 4 apt docker python3
我有以下 docker 文件,基本映像 rundeckpro/runner:latest; 它没有安装Python。镜像构建后,有两个版本的python:python3.10和python3.11,尽管我只请求了python3.11。这有什么原因吗?我可以避免这种情况吗?
ARG RUNNER_VERSION=latest
FROM rundeckpro/runner:${RUNNER_VERSION}
ARG PYTHON_VERSION=python3.11
ARG DEBIAN_FRONTEND=noninteractive
USER root
RUN apt-get update && \
apt-get install -y --no-install-recommends software-properties-common && \
apt-get install -y --no-install-recommends gpg-agent && \
add-apt-repository -y ppa:deadsnakes/ppa && \
apt-get install -y --no-install-recommends $PYTHON_VERSION && \
apt-get install -y --no-install-recommends $PYTHON_VERSION-venv && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1
USER runner
Run Code Online (Sandbox Code Playgroud)
rundeckpro/runner目前基于Ubuntu 22.04,22.04中Python的默认版本是3.10。software-properties-common依赖于 Python,因此安装最终会安装python3.10.
由于您只需要software-properties-common安装deadsnakes PPA,因此您可以在安装 PPA 后将其删除:
RUN apt-get update && \\\n apt-get install -y --no-install-recommends software-properties-common gpg-agent && \\\n add-apt-repository -y ppa:deadsnakes/ppa && \\\n apt-get purge -y --autoremove software-properties-common gpg-agent && \\\n apt-get install -y --no-install-recommends $PYTHON_VERSION && \\\n apt-get clean && \\\n rm -rf /var/lib/apt/lists/*\nRun Code Online (Sandbox Code Playgroud)\n这会给你python3.11但不会python3.10。
不幸的是python3.11-venv,即使在死蛇 PPA 中,也取决于,从而python3-distutils拉入。python3python3.10
另外,不要担心替代方案,Python 包不使用它们;如果需要python3,请链接:
ln -sf python3.11 /usr/bin/python3\nRun Code Online (Sandbox Code Playgroud)\n(但请注意,如果python3安装了该软件包,这可能会破坏 \xe2\x80\x94 如果某个软件包需要该python3软件包,则应单独保留符号链接并python3.11显式使用)。
| 归档时间: |
|
| 查看次数: |
1279 次 |
| 最近记录: |