shell - Docker安装Wine Dockerfile EULA

标签 shell docker dockerfile wine 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屏幕:
EULA alert
当然,我没有写"is"的权利。我试过了 :
RUN echo "yes" | sudo apt-get install wine1.8 winetricks
RUN sudo apt-get -y install wine1.8 winetricks

我能做什么 ?

最佳答案

注意:出于启发性的考虑,如果一个经验丰富的linux / docker用户可以解释为什么我的解决方案对我有用,那么我会喜欢的。

可能的解决方案:
我遇到了这个确切的问题。我必须尝试过所有可能的方法来通过将接受EULA的Dockerfile传递参数。如您所试,包括在wine安装命令中传递"is"的回显,设置环境变量等等。因此,您并不孤单。但是,我确实通过实验找到了一个非常简单的解决方案。

事实证明,如果在安装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

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

关于shell - Docker安装Wine Dockerfile EULA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47156320/

相关文章:

docker - 有没有办法在 docker stats 中显示容器名称?

docker - 如何拆分docker层?

unix - 在 UNIX 中查找所有包含字符的单词

linux - bash shell 中的管道是如何实现的?

reactjs - 2 ip in 1请求与docker/kubernetes上的axio

docker - Docker Compose 构建中的 Nuget 包还原错误

java - Java Spring Boot 的 Docker 基础镜像 (`FROM` 是什么?

linux - 如何使用下一个单词前没有空格的变量?

bash - 如果存在高严重性漏洞,npm install 的 shell 脚本将失败

dockerfile cmd 运行多个命令