我试图从gliderlabs/alpine:latest构建一个docker映像,只包含pyenv及其依赖项。我希望这个容器能够通过pyenv安装和执行任意解释器。在
初步尝试
我从以下Dockerfile开始:FROM gliderlabs/alpine:latest
RUN apk-install curl \
ca-certificates \
bash \
git \
openssl-dev \
readline-dev \
bzip2-dev \
sqlite-dev \
build-base
RUN curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer -o /pyenv-installer
RUN touch /root/.bashrc && \
/bin/ln -s /root/.bashrc /root/.bash_profile && \
/bin/bash /pyenv-installer && \
rm /pyenv-installer && \
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile && \
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile && \
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
ENV HOME /root
ENV PYENV_ROOT $HOME/.pyenv
ENV PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:$PATH
错误
一旦构建完成,我就可以启动一个容器并运行bash,pyenv命令就如预期的那样可用了。在
但是,当我尝试运行pyenv install 3.4.3时,我得到了以下错误:
^{pr2}$
尝试修复
在google上搜索了一下之后,我找到了this页面,对于OSX/homebrew,它给出了以下修复建议:CFLAGS="-I$(brew --prefix openssl)/include"
LDFLAGS="-L$(brew --prefix openssl)/lib"
由于我不使用OSX或自制程序,所以我尝试通过在Dockerfile中添加以下行来使这些命令适应Alpine环境:ENV CFLAGS '-I/usr/include'
ENV LDFLAGS '-L/usr/lib'
请注意,/usr/lib包含:libssl.a
libssl.so
libssl.so.1.0.0
并且/usr/include包含{}。尽管如此,修改似乎对安装python3.4.3时的错误没有任何影响。在
问题
如何让pyenv在一个停靠的alpinellinux下安装python环境?在
编辑:pyenvbuild log显然是阻塞的,因为sockaddr_can类型未定义。我正式迷路了。这是一个musl错误吗?