当前位置:  开发笔记 > 编程语言 > 正文

在docker下安装时是否可以回答对话框问题?

如何解决《在docker下安装时是否可以回答对话框问题?》经验,为你挑选了4个好方法。

在使用apt-get安装某些软件包时,是否有可能以某种方式回答以对话框形式呈现的问题?

例如,我正在尝试设置一个包含该mail-stack-delivery包的容器:

FROM ubuntu

RUN apt-get install -y mail-stack-delivery

但是,dockerfile在构建时会产生许多错误:

debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can't locate Term/ReadLine.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7, <> line 11.)
debconf: falling back to frontend: Teletype
dpkg-preconfigure: unable to re-open stdin: 

根据我的理解,我只是无法回应对话框,但是有一些方法可以通过参数提前回答每个问题吗?我知道它只是改变了一些配置,所以我可以在事后做到这一点,但可能最好让安装脚本做到这一点,所以一切都设置得当.



1> Ohad Schneid..:

请参阅此处的讨论:https://github.com/docker/docker/issues/4032.简而言之,ENV DEBIAN_FRONTEND noninteractive不建议进行设置,因为它会在最终图像中持续存在,即使在运行类似的内容时也是如此docker run -i -t ... bash.因此,建议要么省略DEBIAN_FRONTEND并使用警告,要么为每个命令明确指定,例如RUN DEBIAN_FRONTEND=noninteractive apt-get install -y -q package.

幸运的是,新ARG指令集的变量,只有在生成过程中活了这么一个更优雅的解决方案,现在可以在多数民众赞成规定DockerFile但在最终图像中不坚持:ARG DEBIAN_FRONTEND=noninteractive.



2> cpuguy83..:

你应该将DEBIAN_FRONTEND = noninteractive设置为envvar.在大多数情况下,这至少会使安装不会出错.

同样如@Azdle所述,使用debconf-set-selections将允许您设置特定项目.



3> Azdle..:

像往常一样,更多的搜索找到了答案.

答案是debconf-set-selections.Manpage:http://manpages.ubuntu.com/manpages/oneiric/en/man1/debconf-set-selections.1.html

要查找可以设置的选项,请debconf-get-selections在已安装软件包的系统上使用.您需要安装debconf-utils第二个命令.



4> 小智..:

这是有效的解决方案:

ARG DEBIAN_FRONTEND =非交互式


你能解释一下你的答案吗?喜欢它为何起作用,问题是什么等等.
推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有