(Bash/Docker RUN)自动回答多个提示信息,实现非交互式操作

4

有办法在Bash命令中自动回答“-y”,例如:

RUN apt-get install -y nodejs

但是我有一个需要运行的案例。
 dpkg --install someDebianpackage.deb && apt install --assume-yes --fix-broken

它实际上回答了它给出的即时提示中的y,但在后期阶段,它要求我使用6作为答案配置地理区域。

enter image description here

然后我想用20回答对应时区的城市命令。

enter image description here

然后对于不同的问题,再次使用答案31和1进行相同的操作。

我想知道的是如何以非交互方式运行此命令。 (我希望制作一个docker文件,并将上述命令与其他可以用&&链接的命令一起放在RUN Command中,例如:

RUN apt-get update && apt-get install sudo && "the above command along with their answers" && "some other command"

我非常感谢在这方面的指导


1
你所说的那些答案是由哪个具体的命令询问的?你是否有一个可以分享的 Dockerfile 草图? - Neo Anderson
2
我更新了问题并尝试运行它。通过运行命令 DEBIAN_FRONTEND=noninteractive apt install --assume-yes xfce4 desktop-base,@Nick的下面的答案解决了我的问题。 - Charith Jayasanka
1个回答

4
技术上,您可以使用类似 expect 的工具自动回答提示。但是,这通常比让程序停止询问您问题要困难得多。
我不确定为什么apt会要求您设置时区,但我怀疑您以某种方式引入了tzdata包,它想要配置您的时区。为避免出现这些问题,您应将前端设置为非交互式:

To run dpkg (behind other tools like Apt) without interactive dialogue, you can set one environment variable as

DEBIAN_FRONTEND=noninteractive

(Source.)

在Dockerfile中,你可以像这样设置环境变量:
ENV DEBIAN_FRONTEND=noninteractive

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接