Docker 安装 Wine Docker 文件 EULA

Docker Install Wine Dockerfile EULA

我在我的 alpine 映像上安装 Wine 时遇到了一些小问题。 这是我的 Dockerfile :

RUN dpkg --add-architecture i386 && sudo apt-get update
RUN sudo apt-get install software-properties-common python-software-properties

RUN sudo add-apt-repository ppa:ubuntu-wine/ppa
RUN sudo apt-get update
RUN sudo apt-get install wine1.8 winetricks

RUN sudo apt-get purge software-properties-common python-software-properties

RUN rm -rf /tmp/* /var/lib/apt/lists/* /root/.cache/*

CMD /bin/bash;

一切似乎都运行良好,但在 sudo apt-get install wine1.8 winetricks 期间,我有这个 EULA 屏幕: 我当然没有写"YES"的权利。我试过了:

RUN echo "yes" | sudo apt-get install wine1.8 winetricks
RUN sudo apt-get -y install wine1.8 winetricks

我能做什么?

注意:为了启发,如果更有学问的 linux/docker 用户能够解释为什么我的解决方案对我有效的背后机制,我会很高兴。

可能的解决方案: 我遇到了这个确切的问题。我一定已经尝试了所有可能的方法来通过我的 Docker 文件传递​​一个接受 EULA 的参数;将 "yes" 的回显包括到 wine 安装命令中,就像您尝试的那样,设置环境变量和 so-on。所以,你并不孤单。但是,我确实通过实验找到了一个非常简单的解决方案。

事实证明,如果您在安装 wine 之前安装 TrueType 核心字体(EULA 适用的软件包),您可以像这样将 "yes" 输入传递给它,wine 将永远不会提示输入 EULA:

RUN echo "yes" | apt install ttf-mscorefonts-installer -y

我不确定这是为什么。我怀疑这是因为安装 wine 会在此过程中安装其他几个 packages/dependencies,并且 echo/pipe 方法不会扩展到 wine 尝试安装的所有包。也许通过单独安装字体,wine 安装脚本要么忽略包,因为它已经存在,要么字体安装中的某些文件记录 EULA 接受响应。

这是我的 Docker 文件的内容。我在 Ubuntu 16.04 LTS,使用 Docker 版本 18.02.0-ce,构建 fc4de44:

FROM ubuntu:16.04
RUN dpkg --add-architecture i386
RUN apt-get update -y
RUN echo "yes" | apt install ttf-mscorefonts-installer -y
RUN apt-get install wine -y

我看到这个 post 已经四个月了,但是如果您还没有找到解决方案,我希望这对您有所帮助!