Amazon web services 高山linux上的awscli版本2
我试图将awscli_v2放入一个基于alpine的docker容器中,并看到它失败,出现以下错误消息: /aws/安装:第78行:/aws/dist/aws:未找到Amazon web services 高山linux上的awscli版本2,amazon-web-services,aws-cli,Amazon Web Services,Aws Cli,我试图将awscli_v2放入一个基于alpine的docker容器中,并看到它失败,出现以下错误消息: /aws/安装:第78行:/aws/dist/aws:未找到 考虑到文件本身就在那里,并且可以用ls列出,我猜想可执行文件/aws/dist/aws所依赖的一些库在alpine上不存在。有人知道可能是哪些库吗?AWS CLI版本2是根据glibc编译的,glibc是GNU项目对C标准库的实现。大多数常见的Linux发行版都使用glibc,但Alpine Linux是基于glibc的 由于针对
考虑到文件本身就在那里,并且可以用ls列出,我猜想可执行文件
/aws/dist/aws
所依赖的一些库在alpine上不存在。有人知道可能是哪些库吗?AWS CLI版本2是根据glibc编译的,glibc是GNU项目对C标准库的实现。大多数常见的Linux发行版都使用glibc,但Alpine Linux是基于glibc的
由于针对glibc编译的二进制文件与musl不兼容,因此AWS CLI版本2不在Alpine Linux上运行
在Alpine Linux上运行AWS CLI版本2的最佳方法是Amazon提供以下内容之一:
- 根据musl编译的二进制文件
- 源代码发行版,可在Alpine Linux上编译
- 基于Alpine Linux的官方AWS CLI Docker映像
FROM alpine:3.11
ENV GLIBC_VER=2.31-r0
# install glibc compatibility for alpine
RUN apk --no-cache add \
binutils \
curl \
&& curl -sL https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub -o /etc/apk/keys/sgerrand.rsa.pub \
&& curl -sLO https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}/glibc-${GLIBC_VER}.apk \
&& curl -sLO https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}/glibc-bin-${GLIBC_VER}.apk \
&& curl -sLO https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}/glibc-i18n-${GLIBC_VER}.apk \
&& apk add --no-cache \
glibc-${GLIBC_VER}.apk \
glibc-bin-${GLIBC_VER}.apk \
glibc-i18n-${GLIBC_VER}.apk \
&& /usr/glibc-compat/bin/localedef -i en_US -f UTF-8 en_US.UTF-8 \
&& curl -sL https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip \
&& unzip awscliv2.zip \
&& aws/install \
&& rm -rf \
awscliv2.zip \
aws \
/usr/local/aws-cli/v2/*/dist/aws_completer \
/usr/local/aws-cli/v2/*/dist/awscli/data/ac.index \
/usr/local/aws-cli/v2/*/dist/awscli/examples \
glibc-*.apk \
&& apk --no-cache del \
binutils \
curl \
&& rm -rf /var/cache/apk/*
上述Dockerfile将为Alpine安装“glibc”软件包,以便AWS CLI能够找到所需的共享库。Dockerfile还删除了一些我们可能不需要的东西,比如自动完成和示例。如果您需要一些其他特定的软件包,您当然可以将它们添加到Dockerfile。我在GitHub中找到了这个解决方案,它就像一个符咒-
我不知道遗漏了什么,但我也有同样的问题。当我使用
ubuntu
作为基本图像时,它对我很有用。TBF,确实将CentOS、Fedora、Ubuntu、Amazon Linux 1和Amazon Linux 2列为唯一受支持的操作系统,但我同意能够构建一个alpine映像会很好。GitHub项目中存在一个问题,正如预期的那样工作!回答得很好。几个小时以来,我一直在寻找gclib问题的一个简单实现,但我偶然发现了这个问题。这真的很有帮助,谢谢。这让我很开心。非常感谢。如果需要unicode支持,可以尝试添加以下内容:curl-sLOhttps://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}/GLIBC-i18n-${GLIBC_VER}.apk&&apk添加GLIBC-i18n-${GLIBC_VER}.apk&/usr/GLIBC compat/bin/localedef-i en_US-f UTF-8 en_-US.UTF-8
,所以大约是官方集装箱的一半大小
FROM python:3-alpine3.13 AS installer
ENV AWSCLI_VERSION=2.2.0
RUN apk add --no-cache \
gcc \
git \
libc-dev \
libffi-dev \
openssl-dev \
py3-pip \
zlib-dev \
make \
cmake
RUN git clone --recursive --depth 1 --branch ${AWSCLI_VERSION} --single-branch https://github.com/aws/aws-cli.git
WORKDIR /aws-cli
# Follow https://github.com/six8/pyinstaller-alpine to install pyinstaller on alpine
RUN pip install --no-cache-dir --upgrade pip \
&& pip install --no-cache-dir pycrypto \
&& git clone --depth 1 --single-branch --branch v$(grep PyInstaller requirements-build.txt | cut -d'=' -f3) https://github.com/pyinstaller/pyinstaller.git /tmp/pyinstaller \
&& cd /tmp/pyinstaller/bootloader \
&& CFLAGS="-Wno-stringop-overflow -Wno-stringop-truncation" python ./waf configure --no-lsb all \
&& pip install .. \
&& rm -Rf /tmp/pyinstaller \
&& cd - \
&& boto_ver=$(grep botocore setup.cfg | cut -d'=' -f3) \
&& git clone --single-branch --branch v2 https://github.com/boto/botocore /tmp/botocore \
&& cd /tmp/botocore \
&& git checkout $(git log --grep $boto_ver --pretty=format:"%h") \
&& pip install . \
&& rm -Rf /tmp/botocore \
&& cd -
RUN sed -i '/botocore/d' requirements.txt \
&& scripts/installers/make-exe
RUN unzip dist/awscli-exe.zip && \
./aws/install --bin-dir /aws-cli-bin
FROM alpine:3.13
RUN apk --no-cache add groff
COPY --from=installer /usr/local/aws-cli/ /usr/local/aws-cli/
COPY --from=installer /aws-cli-bin/ /usr/local/bin/