ubuntu – 在docker下安装时是否可能回答对话问题?

是否可以以某种方式回答在使用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:

从我的理解,我只是简单地不能响应对话框,但有一些方法,我可以传递一个参数,以提前回答每个问题?我知道它只是改变一些配置,所以我可以做到事后,但大概最好让安装脚本做到这一切,以便一切正确设置。

请参见这里的讨论: https://github.com/docker/docker/issues/4032.总之,不建议设置ENV DEBIAN_FRONTEND非交互式,因为它仍然存在于最终映像中,即使运行类似docker run -i -t … bash的东西。因此,建议或者省略DEBIAN_FRONTEND,并用警告生效,或者为每个命令明确指定它。 RUN DEBIAN_FRONTEND =非交互apt-get install -y -q软件包。

幸运的是,新的ARG指令设置只在构建过程中生存的变量,因此现在可以在DockerFile中指定一个更优雅的解决方案,但不会保留在最终映像中:ARG DEBIAN_FRONTEND = noninteractive。

相关文章

ubuntu退出redis的示例:指定配置文件方式启动源码redis:roo...
ubuntu中mysql改密码忘了的解决方法:1.在终端中切换到root权...
ubuntu安装mysql失败的解决方法原因:可能是原有的MySQL还有...
使用centos和ubuntu建站的区别有以下几点1.CentOS是Linux发行...
ubuntu图形界面和字符界面切换的方法:可以通过快捷键CTRL+A...
ubuntu中重启mysql失败的解决方法1.首先,在ubuntu命令行中,...