1

在我的高山映像上安装 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 屏幕: EULA 警报 当然我无权写“是”。我试过了 :

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

我能做些什么 ?

4

1 回答 1

2

注意:为了教化,如果有更多学识的 linux/docker 用户可以解释为什么我的解决方案对我有用的机制,我会很高兴的。

可能的解决方案:我遇到了这个确切的问题。我一定已经尝试了所有可能的方法来通过我的 Dockerfile 传递一个接受 EULA 的参数;正如您所尝试的那样,将“yes”的回声包含在wine安装命令中,设置环境变量等等。所以,你在这里并不孤单。然而,我确实通过实验找到了一个非常简单的解决方案。

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

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

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

这是我的 Dockerfile 的内容。我在 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

我看到这篇文章发布已经四个月了,但是如果您还没有找到解决方案,我希望这会有所帮助!

于 2018-03-09T19:16:09.593 回答